DOM 方法 getChildNodes() 返回一个 NodeList 当前的孩子中 Node. 。虽然一个 NodeList 已排序,列表是否保证按文档顺序排列?

例如,给定 <a><b/><c/><d/></a>a.getChildNodes() 保证返回 NodeListb, cd 以该顺序?

javadoc 对此并不清楚。

有帮助吗?

解决方案

根据我的经验,是的。这 DOM规范 并没有更清楚。如果你很偏执,请尝试类似的事情

current = node.firstChild;
while(null != current) {
    ...
    current = current.nextSibling;
}

其他提示

按文档排序的节点列表是 DOM 的其他实现(例如 Javascript 或 Python)中的行为。而且随机排序的节点列表是完全没有用的。我认为依赖按文档顺序返回的节点是安全的。

我的经验是,每次我费心去查看它时,它都是按文档顺序排列的。但是,我相信我在某处读到的内容不能保证按文档顺序排列。我现在找不到在哪里读到的,所以把它当作道听途说。我认为你最好的选择是如果你 必须 按文档顺序排列它们的方法是先使用 FirstChild,然后使用 NextSibling,直到没有更多的同胞为止。

我很想告诉你,这是有保证的(我相信是这样),但是 文档对象模型规范 在这种情况下,它本身似乎是模棱两可的。不过,我很确定它始终是文档顺序的。

在您的示例中,如所示。我相信是这样。然而,我在现实世界中经历过空间被解释为节点的经历,因此:


<a><b/><c/><d/></a>

不同于


<a><b/> <c/><d/></a>

如果您正在查看索引 [1],Firefox 和 IE 可能会显示不同的结果。我建议不要根据您的需要依赖订单。

是的,它们在返回 nodeList 时是有序的,您必须说 getNamedChildNodes 才能获取未按 nameNodeList 那样排序的列表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top