JavaScript中级篇::HTMLCollection 和 NodeList 的区别

初了解:HTMLCollection 和 NodeList 的区别

引自自学JavaScript 0406 课程

<div id="ct">
    <p class="para">Lyndon</p>
    <p class="attr">123<span>dozz</span></p>
</div>
<script>
    var ct = document.getElementById("ct");
    console.log(ct.children);
    console.log(ct.childNodes);
</script>
  • 输出的效果图如下:
    输出效果图

可以看出,当我用 getElementById 方法匹配到 id = "ct"的元素节点后:

  1. ct.children 返回的是一个 HTMLCollection(图中已用红框标出),其中包含的两个元素是 p.para 以及 p.attr

  2. ct.childNodes 返回的是一个 NodeList(图中已用红框标出),其中包含的元素稍微多些,有 5 项:text, p.para, text, p.attr, text

  3. 每一个元素不断展开,会发现有很多的属性,零零碎碎的,这时候可以发现一个比较明显的区别是 textContent 的不同:

    • 在 HTMLCollection 下
      p.paratextContent 是"Lyndon"
      p.attrtextContent 是"123dozz"
    • 在 NodeList 下
      texttextContent 是"↵ "
      p.paratextContent 是"Lyndon"
      texttextContent是"↵ "
      p.attrtextContent 是"123dozz"
      texttextContent 是"↵ "
  4. 相同点:HTMLCollectionNodeList 都是 DOM 节点的集合;

  5. 不同点:两者都属于 Collections 范畴,两者的区别在于:

    • HTMLCollection 对象具有 namedItem()方法,可以传递 id 或 name 获得元素;
    • NodeList 对象只支持 id
    • HTMLCollectionNodeList 多一项方法:namedItem,可以通过传递 id 或 name 属性来获取节点信息;
    • 如下是HTMLCollection 获取id字段的示例代码,大家也可以把id改为name值,用其他方法同样能够开启事件。
// 示例代码:HTMLCollection的namedItem()方法
<h1>HTMLCollection namedItem() 方法</h1>

<p id="myElement">namedItem() 方法返回具有指定 ID 或 name 的元素。</p>

<p>点击按钮返回 ID"myElement"P 元素的内容:</p>

<button onclick="myFunction()">输出 P 的 innerHTML</button>

<script>
function myFunction() {
 var x = document.getElementsByTagName("P").namedItem("myElement");
 alert(x.innerHTML);
}
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小趴菜RQS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值