Rolf B: HTML-Collections => Arrays: Reihenfolge?

Beitrag lesen

Hallo Andrea,

wie schon von Raketenjörg gesagt - ein Array braucht es nicht unbedingt.

ES SEI DENN, du willst in der Schleife das DOM verändern. Dann brauchst Du eventuell das Array, weil die HTMLCollection live ist, die spiegelt Änderungen am DOM sofort wieder.

Aber bevor Du das tust, verwende lieber querySelectorAll. Diese Methode liefert Dir eine statische Nodelist. D.h. sie friert den Zustand des DOM in dem Moment, wo die Abfrage stattfand, ein.

document.getElementsByClassName("foo")  

und

document.querySelectorAll(".foo")  

liefern beide alle Elemente mit Klasse foo. Ersteres als live HTMLCollection, letzteres als statische NodeList, die auch mehr Methoden anbietet.

Eine Reihenfolgegarantie kann ich Dir aber auch nicht geben. Ich finde in der HTML DOM Spezifikation keine Definition dazu. Demnach ist der Browser frei, das Ergebnis nach Belieben zu verwürfeln. Das muss er natürlich nicht tun. Er kann auch eine prefix-Traversierung des DOM Baums vornehmen, die die Elemente in der Reihenfolge liefert wie sie im Sourcecode stehen (ja, ich weiß, wenn man am DOM rumgefummelt hat entspricht es nicht mehr dem Sourcecode).

Rolf

--
sumpsi - posui - obstruxi