DOM方法getChildNodes()
返回当前NodeList
子项的Node
个。虽然订购了NodeList
,但列表是否保证按文档顺序排列?
例如,给定<a><b/><c/><d/></a>
a.getChildNodes()
保证在NodeList
,b
和c
中返回d
为了
javadoc对此并不清楚。
答案 0 :(得分:4)
根据我的经验,是的。 DOM spec并不是更清楚。如果你是偏执狂,尝试类似
的东西current = node.firstChild;
while(null != current) {
...
current = current.nextSibling;
}
答案 1 :(得分:2)
文档排序节点列表是DOM的其他实现中的行为,例如Javascript或Python。随机排序的节点列表完全没用。我认为依赖于按文档顺序返回的节点是安全的。
答案 2 :(得分:2)
我的经验是,每次我都费心去看它一直是按文件顺序排列的。但是,我相信我在某个地方读到它不能保证按文档顺序排列。我现在找不到我在哪里阅读,所以把它当作传闻。我认为,如果必须按文档顺序排列它们,最好的选择是使用FirstChild然后使用NextSibling,直到没有更多的同胞。
答案 3 :(得分:0)
我很想告诉你,这是有保证的(我相信它是这样),但Document Object Model specification本身在这种情况下似乎含糊不清。我很确定它总是文档顺序。
答案 4 :(得分:0)
在您的示例中,如图所示。我相信是这样。但是,我已经体验过将空间解释为节点的真实体验:
<a><b/><c/><d/></a>
与
不同
<a><b/> <c/><d/></a>
如果您正在查看索引[1],则Firefox和IE可能会显示不同的结果。我会根据你的需要建议不要依赖订单。
答案 5 :(得分:0)
是的,它们是有序的,因为它返回一个nodeList,你必须说getNamedChildNodes来获得一个未按照namedNodeList排序的列表。