JavaScript用Element Traversal新属性遍历子元素

之前遍历子元素可以用childNodes属性或者firstChild进行遍历,但是要判断子元素是否是ELement元素。

后来W3C通过Element Traversal规定定义了一组新的属性来进行遍历,就不用判断了,非常方便。

childNodes属性遍历

遍历子元素通常是通过childNodes属性进行遍历,但是这个属性会包含空白节点,如果只是要遍历Element元素就特别不方便。

请看如下代码示例:

1<div class="article"> 2 <p>段落一</p> 3 <p>段落二</p> 4 <p>段落三</p> 5</div> 6 7<script type="text/javascript"> 8 let childList = document.querySelector(".article").childNodes; 9 console.log(childList); 10 // 控制台输出: 11 // NodeList(7) [text, p, text, p, text, p, text] 12</script>

控制台查看效果:

1

获取到的子元素包含了空白的text节点,这些节点就是一些换行、缩进、空格等。

如果要遍历 childList 中p元素,实务中也经常是这样,那么需要判断子元素为Element类型:

1let childList = document.querySelector(".article").childNodes; 2// 遍历子元素 3childList.forEach((item, index) => { 4 if (item.nodeType == 1) { // 判断是Element类型 5 console.log(item); 6 } 7}); 8 9// 控制台输出: 10// 3个p元素

Element系列属性遍历

Element Traversal为DOM元素添加了5个属性:

11. childElementCount 子元素的个数(nodeType=1)。 22. firstElementChilde 指向第一个Element类型的子元素。 33. lastElementChilde 指向最后一个Element类型的子元素。 44. previousElementSibling 指向上一个同胞Element类型的元素。 55. nextElementSibling 指向下一个同胞Element类型的元素。

通过这些新属性,遍历Element元素起来就方便多了,还是以上面为例:

1// 获取第一个元素 2let currentElement = document.querySelector(".article").firstElementChild; 3// 遍历子元素 4while (currentElement) { 5 console.log(currentElement); 6 // 获取下一个元素 7 currentElement = currentElement.nextElementSibling; 8}

这样处理起来就更加简洁了。

目前IE9及以上版本,以及所有现代浏览器都支持这些属性。

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

盘点JavaScript中数组遍历的全部方式(下篇)

前言JavaScript想必大家都不陌生了,上篇文章已经给大家介绍了7种数组遍历的方式,这篇文章继续介绍7种数组遍历的方式,这样一共14种遍历方式,基本上囊括了JavaScript中全部的数组遍历方式了。下面的内容,紧接上面文章的内容,一起来学习下吧八、Find通过寻找数组中的对象返回数组中符合目标函数条件的第一个元素。否则返回undefined,如下:九

java 基础知识

遍历遍历就是把这个数组的每个元素显示出来遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如doublescorenewdouble5;ScannerinputnewScanner(System.in);for(inti0;i<score.l

Mybatis之foreach用法

在mybatis的xml文件中构建动态sql语句时,经常会用到标签遍历查询条件。特此记录下不同情况下书写方式!仅供大家参考1\.foreach元素的属性collection:需做foreach(遍历)的对象,作为入参时,list、array对象时,collection属性

JQ选择器

如果你想寻找id以“sub\_”开头的元素,你可以使用:$("id^'sub_'")如果你想寻找id以“trim”结尾的元素,你可以使用:$("id$'trim'")要获得id包含“AAA”的元素,需要使用(这比遍历要快)$("id'trim'")可以指定元素类型input或者其他标签

JavaScript遍历循环

定义一个数组和对象constarr'a','b','c','d','e','f';constobj{a:1,b:2,c:3,d:4}for()经常用来遍历数组元素遍历值为数组元素索引f