一文了解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 相关文章推荐
escape、encodeURI、encodeURIComponent等方法的区别比较
Dec 27 Javascript
指定js可访问其它域名的cookie的方法
Sep 18 Javascript
Jquery中扩展方法extend使用技巧
Aug 24 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
Dec 27 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
p5.js入门教程之平滑过渡(Easing)
Mar 16 Javascript
vue.js 实现输入框动态添加功能
Jun 25 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
Jul 21 Javascript
jQuery操作cookie的示例代码
Jun 05 jQuery
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
微信小程序完美解决scroll-view高度自适应问题的方法
Aug 08 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的输入输出流
2007/02/14 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
推荐5 个常用的JavaScript调试技巧
2015/01/08 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
jquery合并表格中相同文本的相邻单元格
2015/07/17 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
2019/04/10 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[01:46]2020完美世界全国高校联赛秋季赛报名开启
2020/10/15 DOTA
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
深入了解Python在HDA中的应用
2019/09/05 Python
PIL包中Image模块的convert()函数的具体使用
2020/02/26 Python
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
现金出纳岗位职责
2014/03/15 职场文书
小学生优秀评语大全
2014/04/22 职场文书
2014高中生入党思想汇报范文
2014/09/13 职场文书
拾金不昧感谢信
2015/01/21 职场文书
家长会主持词开场白
2015/05/29 职场文书
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
Python测试框架pytest高阶用法全面详解
2022/06/01 Python