一文了解JavaScript用Element Traversal新属性遍历子元素


Posted in Javascript onNovember 27, 2021

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

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

1、childNodes属性遍历

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

请看如下代码示例:

<div class="article">

    <p>段落一</p>

    <p>段落二</p>

    <p>段落三</p>

</div>

 

<script type="text/javascript">

    let childList = document.querySelector(".article").childNodes;

    console.log(childList);

    // 控制台输出:

    //    NodeList(7) 1

</script>

控制台查看效果:

遍历子元素空白节点:

一文了解JavaScript用Element Traversal新属性遍历子元素

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

如果要遍历 childList 中p元素,实务中也经常是这样,

那么需要判断子元素为Element类型:

let childList = document.querySelector(".article").childNodes;

// 遍历子元素

childList.forEach((item, index) => {

    if (item.nodeType == 1) { // 判断是Element类型

        console.log(item);

    }

});

 

// 控制台输出:

//    3个p元素

2、Element系列属性遍历

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

  • 1. childElementCount 子元素的个数(nodeType=1)。
  • 2. firstElementChilde 指向第一个Element类型的子元素。
  • 3. lastElementChilde 指向最后一个Element类型的子元素。
  • 4. previousElementSibling 指向上一个同胞Element类型的元素。
  • 5. nextElementSibling 指向下一个同胞Element类型的元素。

通过这些新属性,遍历Element元素起来就方便多了,

还是以上面为例:

// 获取第一个元素

let currentElement = document.querySelector(".article").firstElementChild;

// 遍历子元素

while (currentElement) {

    console.log(currentElement);

    // 获取下一个元素

    currentElement = currentElement.nextElementSibling;

}

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

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

到此这篇关于一文了解JavaScriptElement Traversal新属性遍历子元素的文章就介绍到这了,更多相关 浅谈JavaScriptElement Traversal新属性遍历子元素内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
Highslide.js是一款基于js实现的网页中图片展示插件
Mar 30 Javascript
JS+XML 省份和城市之间的联动实现代码
Oct 14 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
Mar 22 Javascript
node.js 动态执行脚本
Jun 02 Javascript
详解javascript事件绑定使用方法
Oct 20 Javascript
详解Javascript中DOM的范围
Feb 13 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
es6 filter() 数组过滤方法总结
Apr 03 Javascript
JavaScript选择器函数querySelector和querySelectorAll
Nov 27 #Javascript
关于JavaScript 中 if包含逗号表达式
Nov 27 #Javascript
JavaScript中MutationObServer监听DOM元素详情
Nov 27 #Javascript
JavaScript中document.activeELement焦点元素介绍
Nov 27 #Javascript
利用JavaScript写一个简单计算器
JavaScript中的宏任务和微任务详情
Nov 27 #Javascript
前端监听websocket消息并实时弹出(实例代码)
You might like
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
PHP时间函数使用详解
2019/03/21 PHP
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
jQuery实现瀑布流的取巧做法分享
2015/01/12 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
python实现自动登录人人网并访问最近来访者实例
2014/09/26 Python
Python的re模块正则表达式操作
2016/05/25 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
目前最全的python的就业方向
2018/06/05 Python
Python chardet库识别编码原理解析
2020/02/18 Python
元旦获奖感言
2014/03/08 职场文书
给老婆的保证书范文
2014/04/28 职场文书
平安校园建设方案
2014/05/02 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
农村党员干部承诺书
2015/05/04 职场文书
2016年寒假家长评语
2015/10/10 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android