一文了解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 插件开发备注
Aug 27 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
Jan 09 Javascript
js中判断文本框是否为空的两种方法
Jul 31 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
javascript 中的console.log和弹出窗口alert
Aug 30 Javascript
利用js编写响应式侧边栏
Sep 17 Javascript
详解vue+vueRouter+webpack的简单实例
Jun 17 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
Sep 25 Javascript
详解Angular Karma测试的持续集成实践
Nov 15 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树形菜单代码
2014/11/19 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
javascript 运算数的求值顺序
2011/08/23 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
jQuery初级教程之网站品牌列表效果
2017/08/02 jQuery
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
Vue指令指令大全
2019/02/09 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
python生成器的使用方法
2013/11/21 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
Python实现的质因式分解算法示例
2018/05/03 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python绘制堆叠柱状图的实例
2019/07/09 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Python 3.8 新功能全解
2019/07/25 Python
PYTHON发送邮件YAGMAIL的简单实现解析
2019/10/28 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
冰淇淋店创业计划书范文
2013/12/27 职场文书
婚庆公司的创业计划书
2014/01/22 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
护士旷工检讨书
2015/08/15 职场文书
小学生运动会广播
2015/08/19 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL