DOM 方法getChildNodes()
返回NodeList
当前Node
. 在订购aNodeList
时,列表是否保证按文档顺序排列?
例如, given保证返回一个with ,<a><b/><c/><d/></a>
并且按那个顺序?a.getChildNodes()
NodeList
b
c
d
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 才能获得一个不像在 namedNodeList 中那样有序的列表。