js Element Traversal规范中的元素遍历方法


Posted in Javascript onApril 19, 2018

支持Element Traversal 规范的浏览器有IE 9+、Firefox 3.5+、Safari 4+、Chrome 和Opera 10+。

对于元素间的空格,在IE9之前,都不会返回文档节点,其它的所有浏览器都会返回文档节点。

为了兼容浏览器这间的差异,又不更改已有的DOM 标准,所以有了 Element Traversal 规范。

这个规范为 元素增加了 5 个 属性

childElementCount
firstElementChild
lastElementChild
previousElementSibling
nextElementSibling

详细官方文档; http://www.w3.org/TR/ElementTraversal/

对于元素间的空格,IE9以前的版本不会返回文本节点,而其他浏览器都会将空格当做是文本节点返回。这就导致了在使用childNodes和firstChild的属性时行为的不一致。为了弥补这一差异,而同时又保持DOM规范的不变,W3C Element Traversal规范新定义了一组属性。

Element Traversal API为DOM元素添加了下面5个属性:

  • childElementCount:返回子元素(不包括文本节点和注释)的个数。
  • firstElementChild:指向第一个子元素。
  • lastElementChild:指向最后一个子元素。
  • previousElementSibling:指向前一个同辈元素。
  • nextElementSibling:指向后一个同辈元素。

支持的浏览器为DOM元素添加了这些属性,利用这些元素不必担心空白文本节点,从而可以非常方便的查找DOM元素了。

下面是一个示例。在以前,要跨浏览器遍历某个元素的所有子元素时,需要像下面这样编写代码:

var i,len,child = element.firstChild;
while(child != element.lastChild){
 if(child.nodeType == 1){
  processChild(child);
 }
 child = child.nextSibling;
}

而使用Element Traversal新增的属性,代码就会变得非常简洁:

var i,len,child = element.firstElementChild;
while(child != element.lastElementChild){
 processChild(child);
 child = child.nextElementSibling;
}

支持Element Traversal规范的浏览器有:IE9+,Firfox3.5+,Safari4+,Chrome和Opera10+。

Javascript 相关文章推荐
基于jquery的表头固定的若干方法
Jan 27 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
Jun 24 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
纯JavaScript手写图片轮播代码
Oct 20 Javascript
Vue.js项目部署到服务器的详细步骤
Jul 17 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
Dec 28 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
Sep 28 Javascript
微信小程序自定义tabBar组件开发详解
Sep 24 Javascript
关于vue里页面的缓存详解
Nov 04 Javascript
关于vue中的ajax请求和axios包问题
Apr 19 #Javascript
详解vue 数据传递的方法
Apr 19 #Javascript
Vue 去除路径中的#号
Apr 19 #Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 #Javascript
基于JS实现html中placeholder属性提示文字效果示例
Apr 19 #Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
Apr 19 #Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 #Javascript
You might like
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
php防止用户重复提交表单
2015/11/02 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
JS常用知识点整理
2017/01/21 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
机器学习10大经典算法详解
2017/12/07 Python
Python应用库大全总结
2018/05/30 Python
Python装饰器简单用法实例小结
2018/12/03 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
Python获取时间戳代码实例
2019/09/24 Python
python实现低通滤波器代码
2020/02/26 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
安全生产先进个人材料
2014/02/06 职场文书
卖房协议书
2014/04/11 职场文书
党的作风建设心得体会
2014/10/22 职场文书
工作经历证明范本
2015/06/15 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
《孙子兵法》:欲成大事者,需读懂这些致胜策略
2019/08/23 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS