第七课提升DOM操作效率的9个手段_第1页
第七课提升DOM操作效率的9个手段_第2页
第七课提升DOM操作效率的9个手段_第3页
第七课提升DOM操作效率的9个手段_第4页
第七课提升DOM操作效率的9个手段_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七课 提升dom操作效率的9个手段本课目标提升dom操作效率的9个通用手段注意:这一节考虑的点和上一节恰好相反,如果把内存泄漏归结为“空间问题”,那么这一节考虑的则是“时间问题”。算法设计里面一个常见的手段是:用空间换时间或者用时间换空间。如何考量,需要具体权衡。基础概念1、浏览器加载html、js、图片的顺序;2、如何解析、渲染html;3、“重绘”加载顺序工具:http:/ 插入顺序 插入顺序:function test1() var d1=new date().gettime(); var father=document.createelement(div); for(var i=0;

2、i1000;i+) var sub=document.createelement(div);sub.id=sub_+i;father.appendchild(sub);document.body.appendchild(father); var d2=new date().gettime();alert(d2-d1);function test2() var d1=new date().gettime(); var father=document.createelement(div);document.body.appendchild(father); for(var i=0;i1000;i+

3、) var sub=document.createelement(div);sub.id=sub_+i;father.appendchild(sub); var d2=new date().gettime();alert(d2-d1);注意点:这里和上一节说的“内存泄漏”中的代码不同可以发现,用时间换空间、用空间换时间之间的考量和平衡第二种 在副本上修改function test3() var orig=$(mydiv); var d1=new date().gettime(); var cloned=orig.clonenode(true); for(var i=0;i10000;i+) v

4、ar sub=document.createelement(div);sub.id=sub_+i;cloned.appendchild(sub);/orig.appendchild(sub);orig.parentnode.replacechild(cloned,orig); var d2=new date().gettime();alert(d2-d1);第三种 先设置为不可见再改varel=$(id);el.style.display=none;/注意一下display=none和visible=false的区别,display=none的时候元素不占位置,而visible=false的时

5、候元素不显示,但是位置还占着。el.appendchlid(newnodes);第四种 缓存元素的属性其实,获取属性的操作也有可能引起“重绘”。如果获取的次数非常频繁,还是非常昂贵。for(vari=0;i=500)clearinterval(timer); return;orig.style.left=(i*5+px);i+;,50);第七种 关于查找第一种,没有优化的手工查找:第二种:break!/在大量查询的时候,找到元素之后,立马break很重要!第三种:使用内置的xpath引擎来查找varheadings=document.evaluate(/h2|/h3|/h4,document,

6、null,xpathresult.ordered_node_iterator_type,null);varoneheading;while(oneheading=headings.iteratenext().下一节的ext优化手段里面给出xpath的实例第八种 dom walk在迭代dom节点的过程中,不要改变节点:varallelements=document.getelementsbytagname(div);for(vari=0;iallelements.length;i+)if(allelementsi.tagname.match(/h2-4$/i).这个例子可以参考java里面的iterator.remove()第九种 缓存频繁使用的节点第一段:document.getelementbyid(test).property1=value1;document.getelementbyid(test).property2=value2;document.getelementbyid(test).property3=value3;document.getelementbyid(test).property4=value4;第二段:varsample=document.getelementbyid(test);perty1=value1;sample.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论