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是一個肯定的變量,就能夠正確的循環結束