DOM编程技巧以及重排和重绘
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DOM编程技巧以及重排和重绘相关的知识,希望对你有一定的参考价值。
html集合&遍历DOM
操作DOM另一个耗能点就是遍历DOM,在平时获取一组元素的时候(getElementsByTagName方法),收集的结果是一个类数组对象,它处于一种“实时状态”实时存在,这意味着当底层文档对象更新时,它也会自动更新。
例子:
而这正是低效之源!很简单,跟数组的优化操作一样,缓存一个length变量就OK了(读取一个集合的length比读取一个普通数组的length要慢很多,因为每次都要查询):
console.time(‘time0‘);
var lis0 = document.getElementsByTagName(‘li‘);
var str0 = ‘‘;
for(var i=0; i<lis0.length; i++){
str0 +=lis0[i].innerHTML;
}
console.timeEnd(‘time0‘);
console.time(‘time1‘);
var lis1 = document.getElementsByTagName(‘li‘);
var str1 = ‘‘;
for(var i=0; len=lis1.length; i<len; i++){
str1 += lis1[i].innerHTML;
}
console.timeEnd(‘time1‘);
结果:time0:0.237ms/time1:0.099ms
当获取的这个类数组对象长度值特别大的时候(如1000),性能提升还是很明显的。
以上是关于DOM编程技巧以及重排和重绘的主要内容,如果未能解决你的问题,请参考以下文章
回流(重排)与重绘 —— 什么是回流和重绘,造成的原因是什么,如何去减少?