一文了解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 相关文章推荐
写的htc的数据表格
Jan 20 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
Oct 23 Javascript
javascript实现自动填写表单实例简析
Dec 02 Javascript
JavaScript 数组some()和filter()的用法及区别
May 20 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&amp;”)
Dec 23 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
在 Typescript 中使用可被复用的 Vue Mixin功能
Apr 17 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
js实现input密码框显示/隐藏功能
Sep 10 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
Dec 07 Javascript
原生JavaScript实现简单五子棋游戏
Jun 28 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/07/20 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
jQuery的Scrollify插件实现滑动到页面下一节点
2015/07/05 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
layui多图上传实现删除功能的例子
2019/09/23 Javascript
jquery实现广告上下滚动效果
2021/03/04 jQuery
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
Django1.7+python 2.78+pycharm配置mysql数据库教程
2014/11/18 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Python常用类型转换实现代码实例
2020/07/28 Python
Python map及filter函数使用方法解析
2020/08/06 Python
Python如何绘制日历图和热力图
2020/08/07 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
师范毕业生自荐信
2013/10/17 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
给分销商的致歉信
2014/01/14 职场文书
个人充满哲理的自我评价
2014/02/20 职场文书
物理教学随笔感言
2014/02/22 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
导师工作推荐信
2015/03/27 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python