关于HTMLCollection和NodeList

在javascript中对DOM的操作是很频繁的是事情。
事实上,在用原生javascript选择器获取dom元素的时候。能直接返回
元素的也仅仅只有以下两条

var dom1=document.getElementById("dom");
var dom2=document.querySelector("#dom");

这两种选择器返回的是dom元素。

而在使用其他的选择器,大部分返回的结果是HTMLCollection,或者NodeList;

先来看下HTMLCollection
他本身是一个对象,一个类数组对象(这里先不考虑什么是类数组对象)。而并非是一个数组。例如如下代码;

<body>
<div class="dom">
    <ul>
        <li class="list1"></li>
        <li class="list1"></li>
        <li class="list1"></li>
        <li class="list1"></li>
        <li class="list1"></li>
        <li class="list1"></li>
    </ul>
</div>

</body>
<script>
    var htmlCL=document.getElementsByClassName("list1");
    console.log(htmlCL);  //返回的是HTMLCollection

</script>

以上代码最后console.log(htmlCL),在控制台返回的结果如下

这里写图片描述

可以看到在proto下面一栏显示的是HTMLCollection对象,而并非是数组,对象的是从0开始的有序整数序列,存储每个class=”list”的dom元素。

直接对HTMLCollection是不能采用对dom元素的操作方式来操作的。比如htmlCL.style.color=”red”;是无效的。原因很简单,htmlCL并不是dom对象,她不具备dom所拥有的属性;

当然我们可以使用数组式选择方式来选择其中的一个元素。比如
htmCl[0];返回的则是对象里面的第一个元素,则可以对他进行操作
如:htmCl[0].style.color=”red”;
我们先看下HTMLColllection有哪些常用的属性和方法

  1. length:返回dom集合的个数;
  2. item: 返回当前选择的dom元素
  3. namedItem 返回name为(“name”)的dom;

length很好理解,就是里面有几个dom元素,方便我们用for循环遍历。

item是选择那个dom元素。比如:htmlCL.item(0); 返回的是HTML
Collection的第一个元素。和htmCl[0]返回的结果是一样的;

namedItem的用法也很简单,比如:htmlCL.namedItem(“names”);
返回的是返回的是HTMLCollection所以元素里第一个具有name=“names”属性的dom元素。

至此,我们可以遍历对每个dom元素进行操作

 for (var i = 0, len = htmlCL.length; i < len; i++) {
        htmlCL.item(i).style.color="red";
  }

关于NodeList
当使用queryselectorAll,或者childNode等方法时候,会返回NodeList对象;
例如:

nodeList=document.querySelectorAll(".list1");
console.log(nodeList);  //这里返回NodeList对象

他的使用方法和对象结构和HTMLCollection几乎一致,除了NodeList没有namedItem方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值