Bei fehlendem Whitespace werden nicht alle Elemente erkannt (Fx).
Nur A1 und A3 werden umgehängt.
Warum?Weil NodeLists per Spezifikation „live“ sind, und immer den aktuellen Zustand des DOM abbilden.
Wenn du ein Element per appendChild umhängst und damit aus #a bzw. #b entfernst, ist es danach nicht mehr in deren childNodes-NodeList enthalten - mit deinen Schleifen überspringst du also Elemente.
Bei #b sind das zufälligerweise die Whitespace-Knoten - bei #a hingegen ist es das P-Element mit dem Inhalt A2.
OK, scheint logisch. Ich habe gesehen (bei dedlfix), dass mit einer while Schleife das Problem umgangen wird.
Meine kürzeste Fassung ohne eine zusätzliche Variable.
while( some_nodecollection[0] ){
some_other_domobject.appendChild( some_nodecollection[0] );
}
Denke ich hierbei wieder zu kurz, oder ist es besser auf:
var x;
while(x = some_nodecollection[0]){ ... }
zu prüfen?
Im letzten Fall prüfe ich den Wahrheitswert der Zuweisung.
Im ersten Fall prüfe ich, ob das Erste Element true ist.
Kann ein Node false sein?
mfg Beat