javascript 节点遍历函数


Posted in Javascript onMarch 28, 2010

火狐官网上找到的一组函数,相当于treeWalker,有了它可以方便地在IE实现Traversal API 2的所有功能(nextElementSibling,previousElementSibling,firstElementChild,lastElementChild,children)These functions let you find the next sibling, previous sibling, first child, and last child of a given node (element). What makes them unique is that they safely ignore whitespace nodes so you get the real node you're looking for each time.

function is_all_ws(nod) { return !(/[^\t\n\r ]/.test(nod.data)); } 
function is_ignorable(nod) { return (nod.nodeType == 8) || ((nod.nodeType == 3) && is_all_ws(nod)); } 
function node_before(sib) { 
while ((sib = sib.previousSibling)) { 
if (!is_ignorable(sib)) return sib; 
} 
return null; 
} 
function node_after(sib) { 
while ((sib = sib.nextSibling)) { 
if (!is_ignorable(sib)) return sib; 
} 
return null; 
} 
function first_child(par) { 
var res = par.firstChild; 
while(res) { 
if(!is_ignorable(res)) return res; 
res = res.nextSibling; 
} 
return null; 
} 
function last_child(par) { 
var res = par.lastChild; 
while(res) { 
if(!is_ignorable(res)) return res; 
res = res.previousSibling; 
} 
return null; 
}
Javascript 相关文章推荐
JavaScript的模块化:封装(闭包),继承(原型) 介绍
Jul 22 Javascript
js动态调用css属性的小规律及实例说明
Dec 28 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 Javascript
JS应用正则表达式转换大小写示例
Sep 18 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
React.js组件实现拖拽排序组件功能过程解析
Apr 27 Javascript
Javascript原型链及instanceof原理详解
May 25 Javascript
javascript 类型判断代码分析
Mar 28 #Javascript
js chrome浏览器判断代码
Mar 28 #Javascript
JavaScript 学习笔记一些小技巧
Mar 28 #Javascript
JavaScript 学习笔记二 字符串拼接
Mar 28 #Javascript
jQuery 美元符冲突的解决方法
Mar 28 #Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 #Javascript
Jquery 1.42 checkbox 全选和反选代码
Mar 27 #Javascript
You might like
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
javascript window.confirm确认 取消对话框实现代码小结
2012/10/21 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
JS倒计时两种实现方式代码实例
2020/07/27 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
给 TensorFlow 变量进行赋值的方式
2020/02/10 Python
python如何编写win程序
2020/06/08 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
经典优秀毕业生求职信范文分享
2013/12/18 职场文书
销售员岗位职责
2014/06/09 职场文书
科学育儿宣传标语
2014/10/08 职场文书
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS