JS遍历DOM 节点树的实现
2021-05-01 05:26
标签:tmp shu return nta const nod 深度遍历 dom 分享 本文将分享 DOM 节点树深度遍历、广度遍历代码。 假定我仅遍历 body 且其结构如下: 遍历完父节点的所有子节点的子节点的子节点...再遍历其兄弟节点。 输出:[section.container, div.left, div.menu, div.right, div.box1, div.box2] 遍历完父节点的所有兄弟节点再遍历其子节点。 输出:[section.container, div.left, div.right, div.menu, div.box1, div.box2] 非递归版: 原文:呆恋小喵 https://www.jianshu.com/p/cef409b161ba JS遍历DOM 节点树的实现 标签:tmp shu return nta const nod 深度遍历 dom 分享 原文地址:https://www.cnblogs.com/cyfeng/p/12148313.html
深度遍历(DFS)
const DFS = {
nodes: [],
do (root) {
for (let i = 0;i
广度遍历(BFS)
const BFS = {
nodes: [],
do (roots) {
var children = [];
for (let i = 0;i ) {
var root = roots[i];
// 过滤 text 节点、script 节点
if ((root.nodeType != 3) && (root.nodeName != ‘SCRIPT‘)) {
if (root.childNodes.length) children.push(...root.childNodes);
this.nodes.push(root);
}
}
if (children.length) {
var tmp = this.do(children);
} else {
return this.nodes;
}
return tmp;
}
}
console.log(BFS.do(document.body.childNodes));
const BFS = {
nodes: [],
do (roots) {
var roots = new Array(...roots);
for (let i = 0;i