一文了解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 相关文章推荐
javascript得到XML某节点的子节点个数的脚本
Oct 11 Javascript
原生js实现查找/添加/删除/指定元素的class
Apr 12 Javascript
JS获得选取checkbox整行数据的方法
Jan 28 Javascript
浅谈JavaScript的全局变量与局部变量
Jun 10 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
jQuery选择器总结之常用元素查找方法
Aug 04 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
微信小程序 空白页重定向解决办法
Jun 27 Javascript
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
关于 angularJS的一些用法
Nov 29 Javascript
centos 上快速搭建ghost博客方法分享
May 23 Javascript
java实现单链表增删改查的实例代码详解
Aug 30 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中break及continue两个流程控制指令区别分析
2011/04/18 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
JavaScript中判断原生函数检查function是否是原生代码
2014/09/09 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
js获取ip和地区
2017/03/10 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
vue中使用elementUI组件手动上传图片功能
2019/12/13 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
深入理解Javascript中的this关键字
2015/03/27 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
Python面向对象编程基础实例分析
2020/01/17 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
医学生求职信
2014/07/01 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
应聘护士求职信
2014/07/21 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏