DOM中的节点,NodeList集合和HTMLCollection集合的区别?

一、DOM和Element

  • DOM是一棵树,所有节点都是Node
  • Node是Element的基类。
  • Element是其他HTML元素的基类

下图可以很好的理解:
在这里插入图片描述

二、HTMLCollection和NodeList简单例子

  • HTMLCollection是Element的集合
  • NodeList是Node的集合

看一段代码:

<body>
    <p id="p1"><b>node</b> different <em>element</em><!--注释--></p>
    <script>
    let p1 = document.getElementById('p1')
    console.log(p1.children)     // HTMLCollection
    console.log(p1.childNodes)   // NodeList
    </script>
</body>

在这里插入图片描述

三、HTMLCollection和NodeList之间的异同

不同点:

HTMLCollectionNodeList
是HTML元素的集合是文档节点的集合。
可以通过名称,ID或索引号访问HTMLCollection项目只能通过其索引号访问NodeList项
不包含属性节点和文本节点只有NodeList对象可以包含属性节点和文本节点
HTMLCollection通过document.getElementByClassName()等方法返回的是动态(live)的HTMLCollection集合NodeList由Node.childNodes和document.querySelectorAll()返回,不同的是node.ChildNodes返回的是动态(live)的NodeList,而document.querySelectorAll()返回的是静态(static)的NodeList。

相同点:

  • NodeList节点列表和HTML元素集合几乎是同一件事。
  • HTMLCollection对象和NodeList对象都是类似数组的对象列表(集合)。
  • 两者都具有length属性,该属性定义列表(集合)中的项目数。
  • 两者都提供索引(0、1、2、3、4,…)以像数组一样访问每个项目。
  • HTMLCollection和NodeList不是数组!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值