訪問一個DOM元素的代價是較高的,修改元素的代價更高,因為它經常導致瀏覽器重新計算頁面的幾何變化。當然,訪問或修改元素最壞的情況是使用循環執行此操作,特別是在HTML集合中使用循環。下面看一個簡單的示例:
function innerHTMLLoop{
for(var count=0;count<15000;count++){
document.getElementById('here').innerHTML+='a';
}
}
上面函數在循環中更新頁面內容。這段代碼的問題是在每次循環中都對DOM元素訪問兩次:一次是讀取innerHTML屬性能容,另一次是寫入它。更有效率的寫法是使用局部變量存儲更新後的內容,在循環結束時一次性寫入,例如:
function innerHTMLLoop2{
var content='';
for(var count=0;count<15000;count++){
content+='a';
}
document.getElementById('here').innerHTML+=content;
}
在所有瀏覽器中,上面代碼的運行速度都要快得多。對DOM的訪問越多,代碼的執行速度就越慢。因此,建議讀者盡量減少對DOM的訪問,並保持在ECMAScript範圍內緩存DOM引用。