手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >javascript 使用 NodeList需要注意的问题
javascript 使用 NodeList需要注意的问题
摘要:因此,他们始终存着最新,最准确的信息。从本质上说,所有NodeList对象都是访问DOM文档时实时运行的查询。例如下列代码会导致无限的循环:...

因此,他们始终存着最新,最准确的信息。从本质上说,所有NodeList对象都是访问DOM文档时实时运行的查询。例如下列代码会导致无限的循环:

复制代码 代码如下:

<script type="text/javascript">

window.onload=function(){

var divObj=document.getElementsByTagName('div');

for(var i=0;i<divObj.length;i++){

var d=document.createElement("div");

document.body.appendChild(d);

}

}

</script>

首先取得页面中的所有div,由于这个集合(divObj)是“动态的”,因此只要有新的div插入到页面中,divObj都会添加这个新添加的div。也就是说,只要访问divObj,都会重新查询一次,重新更新一下divObj。所以,上面的代码,会出现死循环,因为每次循环的时候都插入了一个新的div,而每次循环都要对条件i<divObj.length求值,意味着会运行取得的所有<div>的查询。

如果想要迭代一个NodeList,最好是使用length属性初始化第二个变量,然后将迭代器与该变量比较。如下代码所示:

复制代码 代码如下:

<script type="text/javascript">

window.onload=function(){

var divObj=document.getElementsByTagName('div');

for(var i=0,len=divObj.length;i<len;i++){

var d=document.createElement("div");

document.body.appendChild(d);

}

}

</script>

这个例子中初始化了第二个变量(len)。由于len中保存着对divObj.length的在循环开始时的一个快照,因此就会避免上个例子的死循环。

总结:一般来说,应该尽量减少访问NodeList的次数。因为每次访问NodeList,都会运行一基于文档的查询。所以,可以考虑将从NodeList中取到的值缓存起来,如例子二所示!

【javascript 使用 NodeList需要注意的问题】相关文章:

jquery.validate使用时遇到的问题

javascript下使用Promise封装FileReader

javascript操作ul中li的方法

javascript生成不重复的随机数

在JavaScript中使用开平方根的sqrt()方法

javascript实现动态改变层大小的方法

javascript常用方法总结

javascript实现Table排序的方法

用javascript动态注释掉HTML代码

javascript 动态添加表格行

精品推荐
分类导航