一文了解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 相关文章推荐
js在IE与firefox的差异集锦
Nov 11 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
JavaScript获取当前url根目录(路径)
Jun 17 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
Aug 01 Javascript
全面了解函数声明与函数表达式、变量提升
Aug 09 Javascript
JavaScript中对象的不同创建方法
Aug 12 Javascript
使用flow来规范javascript的变量类型
Sep 12 Javascript
Windows上node.js的多版本管理工具用法实例分析
Nov 06 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
Mar 07 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 更新数据库中断的解决方法
2009/06/05 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
javascript中注册和移除事件的4种方式
2013/03/20 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
SeaJS入门教程系列之完整示例(三)
2014/03/03 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
VUE 实现复制内容到剪贴板的两种方法
2019/04/24 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
python实现排序算法
2014/02/14 Python
基于python编写的微博应用
2014/10/17 Python
python实现用户答题功能
2018/01/17 Python
Django框架验证码用法实例分析
2019/05/10 Python
Python列表对象实现原理详解
2019/07/01 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
简述网络文件系统NFS,并说明其作用
2016/10/19 面试题
卫校护理专业毕业生求职信
2013/11/26 职场文书
家居饰品店创业计划书
2014/01/31 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
委托书范本
2014/04/02 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python