来自 MDN 关于 NodeList 的说明:
在某些情况下,NodeList 是一个实时集合,这意味着 DOM 中的更改会反映在该集合中。例如,Node.childNodes 是实时的:
在其他情况下,NodeList是一个静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以......有点烦人!是否有任何中央参考资料可以查看哪些方法返回实时列表,哪些返回静态列表,而无需逐个检查DOM API的所有各个部分?这里有什么规则在起作用吗?
var parent = document.getElementById('parent'); var child_nodes = parent.childNodes; console.log(child_nodes.length); // let's assume "2" parent.appendChild(document.createElement('div')); console.log(child_nodes.length); // should output "3"