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给input和textarea设定ie中的focus
May 29 Javascript
常用简易JavaScript函数
Apr 09 Javascript
JavaScript对象、属性、事件手册集合方便查询
Jul 04 Javascript
js中eval详解
Mar 30 Javascript
ES6中Iterator与for..of..遍历用法分析
Mar 31 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
js中事件对象和事件委托的介绍
Jan 21 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
Apr 04 Javascript
javascript json对象小技巧之键名作为变量用法分析
Nov 11 Javascript
通过js实现压缩图片上传功能
Feb 25 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面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
浅析IE10兼容性问题(frameset的cols属性)
2014/01/03 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
Vue中引入svg图标的两种方式
2021/01/14 Vue.js
使用graphics.py实现2048小游戏
2015/03/10 Python
使用python生成目录树
2018/03/29 Python
Python 互换字典的键值对实例
2019/02/12 Python
python网络应用开发知识点浅析
2019/05/28 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
django连接oracle时setting 配置方法
2019/08/29 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
python如何调用字典的key
2020/05/25 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
瑞典轮胎在线:Tirendo.se
2018/06/21 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
银行实习生自我鉴定范文
2013/09/19 职场文书
销售总监工作职责
2013/11/21 职场文书
新学期决心书
2014/03/11 职场文书
内衣营销方案
2014/03/15 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
企业整改报告范文
2014/11/08 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python