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是一个肯定的变量,就能够正确的循环结束