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 相关文章推荐
javascript按位非运算符的使用方法
Nov 14 Javascript
jquery通过a标签删除table中的一行的代码
Dec 02 Javascript
jquery将一个表单序列化为一个对象的方法
Dec 02 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
Jan 23 Javascript
jQuery滚动监听实现商城楼梯式导航效果
Mar 06 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 Javascript
解决vue自定义全局消息框组件问题
Nov 22 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
uniapp 微信小程序 自定义tabBar 导航
Apr 22 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
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
利用jquery操作select下拉列表框的代码
2010/06/04 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
js实现网站首页图片滚动显示
2013/02/04 Javascript
使用JavaScript 实现各种跨域的方法
2013/05/08 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
深入理解js数组的sort排序
2016/05/28 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
2019/07/03 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
英国男士时尚购物网站:Stuarts London
2017/10/22 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
考试后的感想
2015/08/07 职场文书
Python进度条的使用
2021/05/17 Python
Golang表示枚举类型的详细讲解
2021/09/04 Golang
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技