Howseeker
2017-03-16 21:44:01
為什么第二次 alert 出來的直接就是123?求解答。手動感激~~<html>
<head>
</head>
<body>
<ul?id="list">
<li></li>
<li></li>
<li></li>
</ul>
<script>
var?list=document.getElementById('list');
var?arr_list=list.childNodes;
alert(arr_list[arr_list.length-1].innerHTML);
var?LI=document.createElement('li');
LI.innerHTML=123;
list.appendChild(LI);
alert(arr_list[arr_list.length-1].innerHTML);??//為什么這里不需要重置?arr_list?數(shù)組就能獲取到ul新添加的子元素?
//在將一個新的?li?標簽寫入?ul?之后,不是要重新寫一次?arr_list=list.childNodes;?才能獲取到新添加進去的?li?嗎??
</script>
</body>
</html>
3 回答
已采納

千秋此意
TA貢獻158條經(jīng)驗 獲得超188個贊
因為getElementById方法(包括其他tagName,className,childNodes等)獲取的其實并不是一個真正的數(shù)組,雖然它也有數(shù)組的一些特性(比如length、index),但是只能算是類數(shù)組對象、偽數(shù)組,在控制臺中打印出來可以發(fā)現(xiàn)他們都是一個叫做NodeList的集合,NodeList集合和數(shù)組有一個重要的區(qū)別,在DOM規(guī)范中有說過NodeList(還有HTMLCollection)等集合都有一個live(動態(tài)、實時)特性,也就是說動態(tài)的NodeList集合所對應(yīng)的DOM節(jié)點發(fā)生了任何改變都會實時的反映到對應(yīng)的集合中,并不需要重新獲取。
添加回答
舉報
0/150
提交
取消