萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網頁製作 >> 互動設計

document.getElementById 簡寫大全:從 $() 到多參數封裝

身為追求代碼詩意的開發者,document.getElementById 這樣冗長的調用實在難以接受。本文匯總三種主流簡寫模式,涵蓖單參數、多參數、跨瀏覽器兼容,助你寫出飛揚的 JavaScript。

方案一:Prototype 風格多參數 $() —— 推薦

支援單參數直接回傳元素,多參數回傳元素陣列,並自動處理字串轉元素:

function $() {
  var elements = [];
  for (var i = 0; i < arguments.length; i++) {
    var el = arguments[i];
    if (typeof el === 'string') el = document.getElementById(el);
    if (arguments.length === 1) return el;
    elements.push(el);
  }
  return elements;
}

用法:$('myId') 回傳單元素;$('id1', 'id2', 'id3') 回傳陣列 [el1, el2, el3]。

方案二:跨瀏覽器兼容版(含 IE4/NN4 回退)

function $(objectId) {
  if (document.getElementById && document.getElementById(objectId)) return document.getElementById(objectId); // W3C
  if (document.all && document.all(objectId)) return document.all(objectId); // IE4
  if (document.layers && document.layers[objectId]) return document.layers[objectId]; // NN4
  return false;
}

適合需支援極舊環境的專案,現代項目通常無需此兼容層。

方案三:極簡別名

var _$ = function(id) { return document.getElementById(id); };

若頁面已引入 jQuery,$ 即為 jQuery,不可覆蓋;此時可用 _$、i_d、myid 等自定義別名。

效益總結

  • 大幅減少 JS 文件體積與輸入錯誤率。
  • 統一團隊代碼風格,提升閱讀流暢度。
  • 語意清晰:$('id') 瞬間可讀為「取得元素」。

選一種適合專案規範的風格,貫徹全專案,讓代碼如詩般閱讀。

copyright © 萬盛學電腦網 all rights reserved