了解 Crockford 的 walk_the_dom ("The Good Parts")
Understanding Crockford's walk_the_dom ("The Good Parts")
我正在努力理解下面 Crockford 的 walk_the_dom
函数。这是我的逻辑和我正在使用的 DOM 树。我看不到什么时候达到 node.nextSibling
。
function walk(node, func) {
func(node);
node = node.firstChild;
while (node) {
walk(node, func);
node = node.nextSibling;
}
};
- func(node) 运行 是给定节点上的一个函数。
- node=node.firstChild() 现在等于 document.body 的 firstChild,或者在这种情况下,H1
- while(node) 运行 是一个循环,其中 walk 函数 又是 运行。
- func(node) 现在 运行 是 H1
上的一个函数
- node = node.firstChild()现在等于H1的firstChild,也就是这里所说的#text案例
- while(node) 运行 是一个循环,其中 walk 函数 又是 运行
func(node) 运行是 #text
上的函数
node = node.firstChild() --> #text的第一个子节点是什么?
- 什么时候达到node.nextSibling?
#text 的 firstChild
是 null
或 undefined
因为没有。 JavaScript 具有所谓的 truthy
值。所以 while(null)
与 while(false)
相同。
我正在努力理解下面 Crockford 的 walk_the_dom
函数。这是我的逻辑和我正在使用的 DOM 树。我看不到什么时候达到 node.nextSibling
。
function walk(node, func) {
func(node);
node = node.firstChild;
while (node) {
walk(node, func);
node = node.nextSibling;
}
};
- func(node) 运行 是给定节点上的一个函数。
- node=node.firstChild() 现在等于 document.body 的 firstChild,或者在这种情况下,H1
- while(node) 运行 是一个循环,其中 walk 函数 又是 运行。
- func(node) 现在 运行 是 H1 上的一个函数
- node = node.firstChild()现在等于H1的firstChild,也就是这里所说的#text案例
- while(node) 运行 是一个循环,其中 walk 函数 又是 运行
func(node) 运行是 #text
上的函数
node = node.firstChild() --> #text的第一个子节点是什么?
- 什么时候达到node.nextSibling?
#text 的 firstChild
是 null
或 undefined
因为没有。 JavaScript 具有所谓的 truthy
值。所以 while(null)
与 while(false)
相同。