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 相关文章推荐
js 设置选中行的样式的实现代码
May 24 Javascript
JavaScript学习笔记之Cookie对象
Jan 22 Javascript
jquery控制页面部分刷新的方法
Jun 24 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
高效利用Angular中内置服务$http、$location等
Mar 22 Javascript
JS重载实现方法分析
Dec 16 Javascript
浅谈Vue下使用百度地图的简易方法
Mar 23 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
vue语法自动转typescript(解放双手)
Sep 18 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
详解JSON.parse和JSON.stringify用法
Feb 18 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调用数据库的存贮过程!
2006/10/09 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
一份老外写的XMLHttpRequest代码多浏览器支持兼容性
2007/01/11 Javascript
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
use jscript Create a SQL Server database
2007/06/16 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
python读写文件write和flush的实现方式
2020/02/21 Python
零基础小白多久能学会python
2020/06/22 Python
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
大学生求职信范文
2014/05/24 职场文书
公司离职证明样本
2014/09/13 职场文书
2016年寒假家长评语
2015/10/10 职场文书
2016年党建工作简报
2015/11/26 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
MySQL系列之十 MySQL事务隔离实现并发控制
2021/07/02 MySQL
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android