首页 » 编写高质量代码:改善JavaScript程序的188个建议 » 编写高质量代码:改善JavaScript程序的188个建议全文在线阅读

《编写高质量代码:改善JavaScript程序的188个建议》建议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引用。