querySelectorAll与childNodes

Posted loveyunk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了querySelectorAll与childNodes相关的知识,希望对你有一定的参考价值。

NodeList 对象是一个节点的集合,是由 Node.childNodes 和 document.querySelectorAll 返回的.

html代码:

    <ul id="parent">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>

js代码:

var parent = document.getElementById("parent");
var child_nodes = parent.childNodes;
console.log(child_nodes.length);
parent.appendChild(document.createElement("div"));
console.log(child_nodes.length);

 

结果:

Node.childNodes 返回节点个数包括空格。

Node.childNodes是动态实时的,如果文档中的节点树发生变化,则已经存在的 NodeList 对象也可能会变化。

 

js代码:

var parent = document.getElementById("parent");
var child_nodes = document.querySelectorAll("li");
console.log(child_nodes.length);
parent.appendChild(document.createElement("div"));
console.log(child_nodes.length);

 

结果:

 

querySelectorAll 返回的节点个数不包括空格。

querySelectorAll 返回的是一个静态的NodeList.也就意味着随后对文档对象模型的任何改动都不会影响集合的内容。其底层实现类似于一组元素的快照,而非不断对文档进行搜索的动态查询。

 

以上是关于querySelectorAll与childNodes的主要内容,如果未能解决你的问题,请参考以下文章

DOM扩展

深入理解javascript中的动态集合——NodeListHTMLCollection和NamedNodeMap

DOM

js 中childNodes与children的区别,firstChild与firstElementChild区别

(getElementBy**)与 querySelector(querySelectorAll) 的区别

ES6中的新特性