getChildNodes()返回的DOM NodeList的顺序
时间:2020-03-05 18:54:19 来源:igfitidea点击:
DOM方法getChildNodes()返回当前Node子节点的NodeList。在订购NodeList的同时,列表是否保证按文档顺序排列?
例如,给定的<a> <b /> <c /> <d /> </a>是a.getChildNodes()保证返回带有b,c和c的NodeList。 d`顺序?
javadoc尚不清楚。
解决方案
回答
文档排序的节点列表是DOM的其他实现(例如Javascript或者Python)中的行为。而且,随机排序的节点列表将毫无用处。我认为依赖于按文档顺序返回的节点是安全的。
回答
以我的经验,是的。 DOM规范还不清楚。如果我们偏执狂,请尝试类似
current = node.firstChild; while(null != current) { ... current = current.nextSibling; }
回答
我的经验是,每当我不愿意查看它时,都是按文档顺序进行的。但是,我相信我在某处阅读并不能保证文件顺序正确。我现在找不到我在哪里读的书,因此将其作为传闻。我认为,如果必须按文档顺序进行操作,最好的选择是先使用FirstChild,然后再使用NextSibling,直到不再有兄弟姐妹为止。
回答
我很想告诉我们,这是可以保证的(我相信是这样),但是在这种情况下,文档对象模型规范本身似乎是模棱两可的。我很确定它始终按文档顺序排列。
回答
在示例中,如图所示。我相信是这样。但是,我经历了现实世界中将空间解释为节点的经历,因此:
<a><b/><c/><d/></a>
与...不同
<a><b/> <c/><d/></a>
如果我们正在查看索引[1],则Firefox和IE可能会显示不同的结果。我建议我们不要依赖订单。
回答
是的,它们是有序的,因为它返回了一个nodeList,我们必须说getNamedChildNodes才能获得一个列表,该列表与namedNodeList中的不一样。