8

DOM 方法getChildNodes()返回NodeList当前Node. 在订购aNodeList时,列表是否保证按文档顺序排列?

例如, given保证返回一个with ,<a><b/><c/><d/></a>并且按那个顺序?a.getChildNodes()NodeListbcd

javadoc对此并不清楚。

4

6 回答 6

5

以我的经验,是的。DOM 规范并不清晰。如果你是偏执狂,试试类似

current = node.firstChild;
while(null != current) {
    ...
    current = current.nextSibling;
}
于 2008-09-15T19:43:42.057 回答
2

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

于 2008-09-15T19:43:07.893 回答
2

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

于 2008-09-15T19:45:50.163 回答
0

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

于 2008-09-15T19:46:48.943 回答
0

在您的示例中,如所示。我相信是这样。但是,我体验过空间被解释为节点的真实体验,因此:


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

不同于


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

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

于 2008-09-15T19:46:51.767 回答
0

是的,它们是有序的,因为它返回一个 nodeList,您必须说 getNamedChildNodes 才能获得一个不像在 namedNodeList 中那样有序的列表。

于 2010-11-28T00:18:49.860 回答