8

DOM メソッドは、現在の の子の をgetChildNodes()返します。aは順序付けされていますが、リストはドキュメントの順序であることが保証されていますか?NodeListNodeNodeList

たとえば、 given<a><b/><c/><d/></a>はwithを返し、その順序で?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

ドキュメント順のノード リストは、Javascript や Python など、DOM の他の実装での動作です。また、ランダムに並べられたノード リストはまったく役に立ちません。ドキュメント順に返されるノードに依存するのは安全だと思います。

于 2008-09-15T19:43:07.893 に答える
2

私の経験では、わざわざ見てみるたびに、ドキュメントの順序になっていました。ただし、ドキュメントの順序であることが保証されていない場所をどこかで読んだと思います。私は今それを読んだ場所を見つけることができないので、伝聞として受け取ってください. ドキュメントの順序でそれらを保持する必要がある場合の最善の策は、兄弟がなくなるまで FirstChild を使用してから NextSibling を使用することだと思います。

于 2008-09-15T19:45:50.163 に答える
0

はい、nodeList を返すときに順序付けられます。namedNodeList のように順序付けされていないリストを取得するには、getNamedChildNodes と言う必要があります。

于 2010-11-28T00:18:49.860 に答える
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 に答える