为什么第二次 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 数组就能获取到ul新添加的子元素?
//在将一个新的 li 标签写入 ul 之后,不是要重新写一次 arr_list=list.childNodes; 才能获取到新添加进去的 li 吗?
</script>
</body>
</html>
3 回答
已采纳
千秋此意
TA贡献158条经验 获得超187个赞
因为getElementById方法(包括其他tagName,className,childNodes等)获取的其实并不是一个真正的数组,虽然它也有数组的一些特性(比如length、index),但是只能算是类数组对象、伪数组,在控制台中打印出来可以发现他们都是一个叫做NodeList的集合,NodeList集合和数组有一个重要的区别,在DOM规范中有说过NodeList(还有HTMLCollection)等集合都有一个live(动态、实时)特性,也就是说动态的NodeList集合所对应的DOM节点发生了任何改变都会实时的反映到对应的集合中,并不需要重新获取。
添加回答
举报
0/150
提交
取消