JS for循环node节点的遍历方法原理是什么?

JS的遍历:

for (var node = document.body.firstChild; node; node = node.nextSibling ) 
{console.log(node);}

如何理解上面这段遍历代码,这是一种什么原理呢?

阅读 4.5k
3 个回答

就算法而言一般使用,深度优先遍历DOM树,比如querySelectorAll就是这样的。

你这个只能遍历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的一级子元素

推荐问题
宣传栏