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 相关文章推荐
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
Jan 15 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
javascript获取本机操作系统类型的方法
Aug 13 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
ionic2自定义cordova插件开发以及使用(Android)
Jun 19 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 Javascript
JavaScript随机数的组合问题案例分析
May 16 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
Aug 10 Javascript
JavaScript实现雪花飘落效果
Dec 27 Javascript
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
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下保存远程图片到本地的办法
2010/08/08 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
浅析js封装和作用域
2013/07/09 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
使用JavaScript中的lodash编写双色球效果
2018/06/24 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
python使用Berkeley DB数据库实例
2014/09/26 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python 移动光标位置的方法
2019/01/20 Python
pycharm内无法import已安装的模块问题解决
2020/02/12 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
python 判断一组数据是否符合正态分布
2020/09/23 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
纯CSS3实现8组超炫酷鼠标滑过图片动画
2016/03/16 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
财务出纳员岗位职责
2013/11/26 职场文书
2014年应届大学生自我评价
2014/01/09 职场文书
公益广告语集锦
2014/03/13 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
党员先进事迹材料
2014/12/19 职场文书
SQL实现LeetCode(196.删除重复邮箱)
2021/08/07 MySQL