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 相关文章推荐
超级强大的表单验证
Jun 26 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
jQuery常见开发技巧详细整理
Jan 02 Javascript
js获取location.href的参数实例代码
Aug 02 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
JavaScript基本的输出和嵌入式写法教程
Oct 20 Javascript
js html5 css俄罗斯方块游戏再现
Oct 17 Javascript
微信小程序 二维码canvas绘制实例详解
Jan 06 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
基于vue的换肤功能的示例代码
Oct 10 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
让你30分钟快速掌握vue3教程
Oct 26 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/02/13 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
2019/10/12 PHP
js setattribute批量设置css样式
2009/11/26 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
js中style.display=""无效的解决方法
2014/10/30 Javascript
jQuery实现的鼠标经过时变宽的效果(附demo源码)
2016/04/28 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
nodejs读取图片返回给浏览器显示
2019/07/25 NodeJs
JS document对象简单用法完整示例
2020/01/14 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现身份证号码解析
2015/09/01 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python部署web开发程序的几种方法
2017/05/05 Python
Python数据结构之图的应用示例
2018/05/11 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
详解python播放音频的三种方法
2019/09/23 Python
python入门之基础语法学习笔记
2020/02/08 Python
Python中无限循环需要什么条件
2020/05/27 Python
为什么称python为胶水语言
2020/06/16 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
python3排序的实例方法
2020/10/20 Python
医学生实习自荐信
2013/10/01 职场文书
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang