讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議108:謹慎訪問DOM >

建議108:謹慎訪問DOM

訪問一個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引用。