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 相关文章推荐
js字符编码函数区别分析
Dec 28 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
Jan 30 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
May 12 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
Dec 16 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
Jul 10 Javascript
JS运动特效之链式运动分析
Jan 24 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
vue中动态设置meta标签和title标签的方法
Jul 11 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 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入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
php 中英文语言转换类代码
2011/08/11 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
PHP7新增函数
2021/03/09 PHP
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
让浏览器崩溃的12行JS代码(DoS攻击分析及防御)
2016/10/10 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
如何使用angularJs
2017/05/08 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
Python中反射和描述器总结
2018/09/23 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
python3获取url文件大小示例代码
2019/09/18 Python
基于python实现计算且附带进度条代码实例
2020/03/31 Python
win10下python3.8的PIL库安装过程
2020/06/08 Python
Django实现简单的分页功能
2021/02/22 Python
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
对祖国的寄语大全
2014/04/11 职场文书
简单租房协议书
2014/10/21 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
法律进社区活动总结
2015/05/07 职场文书
世界文化遗产导游词
2019/08/07 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS