JavaScript 实现节点遍历工具函数
作者:纸飞机时间:2026-10-25 04:54:59浏览:241
本文介绍了一组用于 JavaScript 的节点遍历函数,旨在解决旧版浏览器(如 IE)中缺乏 Traversal API 支持的问题。通过自定义函数实现 nextElementSibling、previousElementSibling 等标准 DOM 方法的功能,并自动忽略空白文本节点和注释节点,确保获取到真实的元素节点。
节点遍历工具函数介绍
从火狐官网获取的一组函数,其功能等同于 treeWalker。利用这些函数,可以在 Internet Explorer 中实现 Traversal API 2 的全部功能,包括 nextElementSibling、previousElementSibling、firstElementChild、lastElementChild 以及 children。这些函数允许你查找给定节点(元素)的下一个兄弟节点、上一个兄弟节点、第一个子节点和最后一个子节点。其独特之处在于安全地忽略了空白节点,从而确保每次都能获取到你真正寻找的节点。
节点遍历函数实现代码
代码如下:
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;
}作者最新文章
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
