NodeList与HTMLCollection

2018-08-14  本文已影响0人  jackie季

NodeList与HTMLCollection都是DOM获取节点的集合时所返回的对象,它们存在着一些相同点和不同点:

相同点:

  1. 都是类数组
  2. 都有length属性
  3. 都有item()方法,可以传入索引值取得元素

不同点:

  1. NodeList节点的集合不仅包括元素节点,还包括文本节点、注释节点等其它节点;HTMLCollection只包括元素节点
  2. HTMLCollection还有一个namedItem()方法,可以返回集合中name属性和id属性值的元素


    详解:

NodeList

1 <body>
 2     <div id="node">
 3         文本节点
 4         <!-- 注释节点 -->
 5         <span>node1</span>
 6         <span>node2</span>
 7         <span>node3</span>
 8     </div>
 9 </body>
10 <script>
11     var node = document.getElementById('node'),
12         nodeLists = node.childNodes
13     console.log(nodeLists.length) //     输出为9
14 </script>

上面的HTML代码中,“文本节点”和父节点子节点的空格(连着的文本)算做一个文本节点,然后是一个注释节点和注释节点和元素节点之间的空格(换行会产生空格,空格算做文本节点)的文本节点,紧接着的是一个元素节点和元素节点之间的换行的文本节点,三个元素节点和元素节点间的两个文本节点,最后是最后得元素节点和父元素之间的空格产生的文本节点,总共是9个节点。

HTMLCollection

<div>
 <!-- Comment -->
<p>This is Some Text</p>
<img name="test" src="test.jpg">
</div>

那么假设得到了这个div的子元素构成的HTMLCollection,叫做list,那么使用list.namedItem("test")就可以直接得到里面的img元素。

上一篇 下一篇

猜你喜欢

热点阅读