Frage

Die DOM-Methode getChildNodes() eine NodeList der Kinder des aktuellen Node zurückgibt. Während ein NodeList bestellt wird, ist die Liste garantiert in dem Dokument, um sein?

Zum Beispiel gegeben <a><b/><c/><d/></a> a.getChildNodes() garantiert eine NodeList mit b, c und d in dieser Reihenfolge zurückzukehren

Die javadoc ist auf diese nicht klar.

War es hilfreich?

Lösung

Nach meiner Erfahrung, ja. Die DOM spec ist nicht klarer. Wenn Sie paranoid sind, versuchen Sie so etwas wie

current = node.firstChild;
while(null != current) {
    ...
    current = current.nextSibling;
}

Andere Tipps

Ein Dokument geordneten Knotenliste ist das Verhalten in anderen Implementierungen des DOM, wie Javascript oder des Pythons. Und eine zufällig geordnete Knotenliste wäre völlig nutzlos. Ich denke, es ist sicher auf abzuhängen Knoten in Dokumentreihenfolge zurückgegeben werden.

Meine Erfahrung ist, dass jedes Mal, wenn ich die Mühe gemacht haben, schauen sie in der Reihenfolge des Dokuments war. Allerdings glaube ich, dass ich irgendwo gelesen, ist es nicht sein, in der Dokumentreihenfolge garantiert. Ich kann nicht finden, wo ich, dass gerade jetzt lesen, so nehmen Sie es als Hörensagen. Ich denke, die beste Wahl, wenn Sie auf muss haben sie in dem Dokument, um dann zu verwenden, wäre Firstchild nextSibling, bis es keine mehr sibs sind.

Ich würde gerne sagen, dass dies gewährleistet ist (wie ich glaube, es ist), aber die Document Object Modellspezifikation selbst scheint in diesem Fall nicht eindeutig. Ich bin mir ziemlich sicher, dass es immer dokumentieren Ordnung, though.

In Ihrem Beispiel, wie dargestellt. Ich glaube schon. Allerdings habe ich die reale Welt Erfahrungen erlebt, in denen Räume interpretiert wurden als Knoten so:


<a><b/><c/><d/></a>

ist anders als


<a><b/> <c/><d/></a>

Wenn Sie bei Index gesuchte [1], Firefox und IE können unterschiedliche Ergebnisse präsentieren. Ich würde davon abraten, in der Größenordnung unter Berufung je nach Bedarf.

Ja sie bestellt werden, da sie eine nodeList zurückkommt, würden Sie getNamedChildNodes zu sagen haben, um eine Liste zu erhalten, die nicht wie in namedNodeList bestellt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top