JS的遍历:
for (var node = document.body.firstChild; node; node = node.nextSibling )
{console.log(node);}
如何理解上面这段遍历代码,这是一种什么原理呢?
JS的遍历:
for (var node = document.body.firstChild; node; node = node.nextSibling )
{console.log(node);}
如何理解上面这段遍历代码,这是一种什么原理呢?
你这个只能遍历body的直接子节点,一开始node = document.body.firstChild
设置node为body的第一个孩子,以后每次node = node.nextSibling
将node设置为它的兄弟节点。如果是下面的HTML结构:
<body>
<div>1
<p>11</p>
</div>
<p>2</p>
<p>3</p>
</body>
body的第一个子节点为div
,然后它的兄弟节点为第一个p,再然后第二个p,然后循环结束。
取body第一个子元素作为循环起点,循环一次,再将该节点的nextSibling也就是下一个兄弟节点作为node打印输出.就是这样了,这个不能深度递归遍历,只能取body的一级子元素
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
就算法而言一般使用,深度优先遍历DOM树,比如querySelectorAll就是这样的。