一文了解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之bind使用介绍
Oct 09 Javascript
innerHTML与jquery里的html()区别介绍
Oct 12 Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
Aug 18 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
Mar 28 Javascript
Javascript实现找不同色块的游戏
Jul 17 Javascript
Angular封装表单控件及思想总结
Dec 11 Javascript
微信小程序开发(二):页面跳转并传参操作示例
Jun 01 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中显示格式化的用户输入
2006/10/09 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
Docker配置PHP开发环境教程
2016/12/21 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
JScript中的条件注释详解
2015/04/24 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
《狼》教学反思
2014/03/02 职场文书
洗发露广告词
2014/03/14 职场文书
任命书格式
2014/06/05 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
诚信教育主题班会
2015/08/13 职场文书