一文了解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 语言的递归编程
May 18 Javascript
浅谈javascript的分号的使用
May 12 Javascript
js比较日期大小的方法
May 12 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
Jul 04 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
vue过渡和animate.css结合使用详解
Jun 14 Javascript
webpack构建react多页面应用详解
Sep 15 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
Vue 中 a标签上href无法跳转的解决方式
Nov 12 Javascript
vue页面跳转实现页面缓存操作
Jul 22 Javascript
详解如何在Canvas中添加事件的方法
Apr 17 Javascript
浅谈克隆 JavaScript
Nov 02 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 查找字符串常用函数介绍
2012/06/07 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
PHP、Python和Javascript的装饰器模式对比
2015/02/03 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
python爬虫常用的模块分析
2014/08/29 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
python中global与nonlocal比较
2014/11/21 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
python2 与python3的print区别小结
2018/01/16 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
python实现udp传输图片功能
2020/03/20 Python
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
《母鸡》教学反思
2014/02/25 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
工厂车间标语
2014/06/19 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
2015年除四害工作总结
2015/07/23 职场文书
Python实现简单得递归下降Parser
2022/05/02 Python