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 表格插件整理
Apr 27 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
Feb 07 Javascript
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
jQuery动画animate方法使用介绍
May 06 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
使用delegate方法为一个tr标签加一个链接
Jun 27 Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 Javascript
jQuery选择器总结之常用元素查找方法
Aug 04 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
javascript 设计模式之享元模式原理与应用详解
Apr 08 Javascript
js实现手表表盘时钟与圆周运动
Sep 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
wordpress之wp-settings.php
2007/08/17 PHP
php mail to 配置详解
2014/01/16 PHP
php简单smarty入门程序实例
2015/06/11 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
[02:03]《现实生活中的DOTA2》—林书豪&DOTA2职业选手出演短片
2015/08/18 DOTA
python基础教程之python消息摘要算法使用示例
2014/02/10 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
python版DDOS攻击脚本
2019/06/12 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
用Python写一个for循环的例子
2016/07/19 面试题
护理专科毕业自荐信范文
2014/04/21 职场文书
万能检讨书2000字
2014/10/17 职场文书
鲁迅故里导游词
2015/02/05 职场文书
观后感开头
2015/06/19 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
详解Python flask的前后端交互
2022/03/31 Python
python游戏开发Pygame框架
2022/04/22 Python