getChildNodes()에서 반환된 DOM NodeList의 순서
문제
DOM 방식 getChildNodes()
반환합니다 NodeList
현재의 아이들 중 Node
.동안 NodeList
순서가 지정되어 있으면 목록이 문서 순서대로 유지됩니까?
예를 들어, 주어진 <a><b/><c/><d/></a>
~이다 a.getChildNodes()
반환을 보장 NodeList
~와 함께 b
, c
그리고 d
그와 같은 순서로?
그만큼 javadoc 이에 대해서는 명확하지 않습니다.
해결책
내 경험상 그렇습니다.그만큼 DOM 사양 더 명확하지 않습니다.편집증이 있다면 다음과 같은 것을 시도해보세요
current = node.firstChild;
while(null != current) {
...
current = current.nextSibling;
}
다른 팁
문서순으로 정렬된 노드 목록은 Javascript나 Python과 같은 DOM의 다른 구현에서의 동작입니다.그리고 무작위로 정렬된 노드 목록은 전혀 쓸모가 없습니다.문서 순서대로 반환되는 노드에 의존하는 것이 안전하다고 생각합니다.
내 경험으로는 내가 귀찮게 보려고 할 때마다 문서 순서대로 되어 있었습니다.하지만 어딘가에서 읽은 내용이 문서 순서대로 보장되지는 않는다고 생각합니다.지금은 어디서 읽었는지 찾을 수 없으므로 소문으로 받아들이십시오.내 생각엔 네가 한다면 가장 좋은 방법이 될 것 같아 ~ 해야 하다 문서 순서대로 사용하려면 형제가 더 이상 없을 때까지 FirstChild를 사용한 다음 NextSibling을 사용하는 것입니다.
나는 이것이 보장된다고 말하고 싶습니다. (내가 믿는 것처럼) 문서 개체 모델 사양 이 경우에는 그 자체가 모호해 보입니다.그래도 항상 문서 순서라고 확신합니다.
귀하의 예에서 제시된 바와 같습니다.나는 그렇다고 믿는다.그러나 저는 공간이 노드로 해석되는 실제 경험을 경험했습니다.
<a><b/><c/><d/></a>
와는 다르다
<a><b/> <c/><d/></a>
인덱스 [1]을 보면 Firefox와 IE가 다른 결과를 나타낼 수 있습니다.귀하의 필요에 따라 주문에 의존하지 않는 것이 좋습니다.
예, nodeList를 반환하므로 순서가 지정됩니다. NamedNodeList처럼 순서가 지정되지 않은 목록을 얻으려면 getNamedChildNodes라고 말해야 합니다.