NodeList

js中全部的NodeList类型都是动态变化的,即NodeList中的内容发生变化,会立刻再NodeList中发生反映app

相似的还有HTMLCollection类型get

好比childNodesio

getElements获得的内容变量

querySelectorAll获得的内容List

举例说明循环

<ul id="a">程序

<li></li>query

<li></li>document

<li></li>

</ul>

var ul=document.getElementsByID("a")

for(var i=0;i<ul.childNodes.length;i++)

{

var li=document.createElement("li");

ul.appendChild(li)

}

上面的循环永远不会结束,由于ul的childNodes是一个NodeList类型,是动态变化的,每次增长了一个新的li,ul的childNodes的长度就会马上加1

因此i永远不会达到ul.childNodes.length的值,因此循环永远不会结束。这个例子很清晰的反应了NodeList的动态变化

若是想实现上面的程序,能够这样改

var ul=document.getElementsByID("a")

for(var i=0,var len=ul.childNodes.length;i<len;i++)

{

var li=document.createElement("li");

ul.appendChild(li)

}

这样len是一个肯定的变量,就能够正确的循环结束

相关文章
相关标签/搜索