遍历dom时如何优化JS性能
2017-09-05 23:07
351 查看
1. 遍历DOM
当遍历父节点下面的所有子节点时,例如:
2) childNodes
2. 元素节点
childNodes、nextSibling等都包含空格或者换行符之类,因此是使用时会增加一些不必要的操作。在实际使用时可以用children代替childNodes,nextElementSibling代替nextSibling,以此类推。
3. 选择器API
jQuery中提供了CSS选择器,进行DOM操作,最新的浏览器也提供了一个名叫querySeletorAll()的原生DOM方法,这种方法比使用js和dom来遍历查找元素快很多。例如:
当遍历父节点下面的所有子节点时,例如:
<div id="parent"> <li>1</li> <li>2</li> 9000个 <li>9003</li> </div>
var div=document.getElementById("div");1) nextSibling方法
var f=div.firstChild; var name=''; do{ name=div.nodeName; }while(f=f.nextSibling)
2) childNodes
var li_arr=div.childNodes; for(var i=0, len=arr.length; i<len; i++){ name=li_arr[i].nodeName; }两种方法的运行时间几乎相等,但是在IE中nextSibling比childNodes快很多,IE6中快16倍,IE7中快105倍。推荐使用第一种方法。
2. 元素节点
childNodes、nextSibling等都包含空格或者换行符之类,因此是使用时会增加一些不必要的操作。在实际使用时可以用children代替childNodes,nextElementSibling代替nextSibling,以此类推。
3. 选择器API
jQuery中提供了CSS选择器,进行DOM操作,最新的浏览器也提供了一个名叫querySeletorAll()的原生DOM方法,这种方法比使用js和dom来遍历查找元素快很多。例如:
var li_arr=document.querySeletorAll("#div li");该方法不会返回HTML集合,因此返回的节点不会对应实时的文档结构。
相关文章推荐
- 【react-router】从Link组件和a标签的区别说起,react-router如何实现导航并优化DOM性能?
- js如何遍历dom
- js性能优化 如何更快速加载你的JavaScript页面
- JQuery each()函数如何优化循环DOM结构的性能
- js性能优化 如何更快速加载你的JavaScript页面
- 关于DOM的优化以及js的性能问题
- 案例-js-模块化创建dom与字符串创建dom的耗时比较(性能优化)
- 网站性能优化-如何加载JS,JS应该放在什么位置?
- 性能优化:如何更快速加载你的JS页面
- JQuery each()函数如何优化循环DOM结构的性能
- js性能优化 如何更快速加载你的JavaScript页面
- 关于js中几种遍历方法性能的测试
- js-关于性能优化的一些学习总结
- 如何遍历一个JS对象的属性和方法
- ASP.NET如何进行性能优化问题
- 如何优化JavaScript脚本的性能
- 如何用 OneAPM 优化你的 Node.js 应用?
- JS遍历DOM文档树的方法实例详解
- 如何优化JavaScript脚本的性能
- 认识DOM和DOM加载过程以及如何让DOM加载完成后再执行js脚本文件