身為追求代碼詩意的開發者,document.getElementById 這樣冗長的調用實在難以接受。本文匯總三種主流簡寫模式,涵蓖單參數、多參數、跨瀏覽器兼容,助你寫出飛揚的 JavaScript。
支援單參數直接回傳元素,多參數回傳元素陣列,並自動處理字串轉元素:
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]。
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 等自定義別名。
$('id') 瞬間可讀為「取得元素」。選一種適合專案規範的風格,貫徹全專案,讓代碼如詩般閱讀。