Javascript 如何按顺序遍历DOM?

Javascript 如何按顺序遍历DOM?,javascript,Javascript,我发现这是一份荒谬的技术文件: 但没有看到它与编写实际的JavaScript代码有什么关系 我想我可以使用基本的DOM方法和属性,如eachChild()和.children来进行遍历,但我不确定最好的策略是什么?一旦获得根节点,您只需要firstChild和nextSibling。这是Douglas Crockford的函数,来自他的书JavaScript-好的部分,p。35: 它意味着从给定节点遍历DOM,并在找到的每个节点上运行回调。例如: walk_the_DOM(document.b

我发现这是一份荒谬的技术文件:

但没有看到它与编写实际的JavaScript代码有什么关系


我想我可以使用基本的DOM方法和属性,如
eachChild()
.children
来进行遍历,但我不确定最好的策略是什么?

一旦获得根节点,您只需要
firstChild
nextSibling
。这是Douglas Crockford的函数,来自他的书JavaScript-好的部分,p。35:

它意味着从给定节点遍历DOM,并在找到的每个节点上运行回调。例如:

walk_the_DOM(document.body, function(node) {
    console.log(node);
});

这里有一种方法可以使用:


深度优先、预顺序遍历(相当于开始标记在文档的文本表示形式中出现的顺序)有什么可笑的技术?您想做什么?在现代浏览器中,有许多帮助器API可以查找具有特定质量的元素。@Handy,
DocumentTraversal
是一个提供文档顺序迭代器的接口,可以通过浏览器提供的
document
实例来实现。如果您的浏览器支持和,那么您确实可以从Javascript访问该接口。在编程意义上,Javascript没有接口@Handy,该接口是您正在使用的Javascript实现所使用的抽象设备。在JS端,
document
要么实现这些方法,要么不实现,您可以检查这些方法。这为您提供了一个遍历DOM的好例子:@Handy这更适合浏览器供应商/实现提供商。无论如何,它记录了整个domapi标准。F.J的答案基于这里提到的内容(createNodeIterator的
createNodeIterator
函数)。
walk_the_DOM(document.body, function(node) {
    console.log(node);
});
var nodeIterator = document.createNodeIterator(document.body);
var currentNode;
while (currentNode = nodeIterator.nextNode()) {
    console.log(currentNode);
}