一文了解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 最近浏览过的商品的功能实现代码
May 14 Javascript
利用jquery的获取JS文件中的字符串内容
Feb 14 Javascript
JS实现的表格行鼠标点击高亮效果代码
Nov 27 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
Dec 12 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
在Vue.js中使用Mixins的方法
Sep 12 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 Javascript
微信小程序的线程架构【推荐】
May 14 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
Nov 03 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/04/18 PHP
php格式化金额函数分享
2015/02/02 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
javascript 函数参数限制说明
2010/11/19 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
用Python给文本创立向量空间模型的教程
2015/04/23 Python
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
详解Python if-elif-else知识点
2018/06/11 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Python基于pygame实现单机版五子棋对战
2019/12/26 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
集结号观后感
2015/06/08 职场文书