一文了解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 相关文章推荐
jquery插件jquery倒计时插件分享
Dec 27 Javascript
JS简单限制textarea内输入字符数量的方法
Oct 14 Javascript
jquery+ajax实现注册实时验证实例详解
Dec 08 Javascript
Jquery ajax请求导出Excel表格的实现代码
Jun 08 Javascript
Bootstrap被封装的弹层
Jul 20 Javascript
浅谈JS中的常用选择器及属性、方法的调用
Jul 28 Javascript
vue 的keep-alive缓存功能的实现
Mar 22 Javascript
小程序实现带年月选取效果的日历
Jun 27 Javascript
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
ES6 Proxy实现Vue的变化检测问题
Jun 11 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 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+highchats生成动态统计图
2014/05/21 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
php遍历CSV类实例
2015/04/14 PHP
php生成验证码函数
2015/10/20 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
javascript打印输出json实例
2013/11/11 Javascript
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
进一步探究Python中的正则表达式
2015/04/28 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
关于保护环境的标语
2014/06/09 职场文书
党性观念心得体会
2014/09/03 职场文书
大学生个人学年总结
2015/02/15 职场文书
工程项目合作意向书
2015/05/08 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
感谢信
2019/04/11 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
详解Flask开发技巧之异常处理
2021/06/15 Python