Hallo,
Ich hab dir die Dateien per Mail geschickt, groß sind sie ja noch nicht ;)
Bitte mach das nicht mehr. Der Sinn eines Fachforums ist es, Probleme _dort_ bis zum Ende auszudiskutieren. Das hat den Grund, dass andere Anwender, die Lösungen zu diesem Problem suchen, diese auch finden. Was nutzt denen die Aussage: "Ich hab Dir das mal gemailt." Wenn Du also keine Testseite hochladen kannst, dann poste hier den relevanten Quellcode.
Dieses Phänomen finde ich irgendwie witzig..
Nein ;-). Es ist das typische Problem von: "Um Rekursion zu verstehen, muss man zunächst mal Rekursion verstanden haben."
Du hast folgende Schleife:
for(i=0; i<dynamisch.childNodes.length; i++) {
alert(dynamisch.childNodes.length);
dynamisch.removeChild(dynamisch.firstChild);
}//for
Das dynamisch.removeChild(dynamisch.firstChild) ändert aber die Anzahl der childNodes in dynamisch. Dadurch wird der Endwert dynamisch.childNodes.length nach jedem Durchlauf der for-Schleife um 1 geringer. Die Schleife wird also nie alle childNodes entfernen. Nehmen wir an, dynamisch.childNodes.length wäre am Anfang 3. In der Schleife wird ein childNode enfernt, dann ist i==1 und dynamisch.childNodes.length==2. Nun wird noch ein childNode enfernt, dann ist i==2 und dynamisch.childNodes.length==1 und die Schleife ist beendet. Ein childNode bleibt übrig, drei kommen neu hinzu. Nun geht das Spiel weiter:
anz==4; i==1; anz==3; i==2; anz==2 --> 2 bleiben übrig
anz==5; i==1; anz==4; i==2; anz==3; i==3; anz==2 --> 2 bleiben übrig
...
Das alert() zeigt übrigens, wie ich drauf gekommen bin.
Die Lösung ist, die Anzahl der childNodes _vor_ der Schleife in einer Variablen zu seichern und _diese_ dann als Schleifenendwertzu nutzen.
var lg_dynamisch = dynamisch.childNodes.length;
for(i=0; i<lg_dynamisch; i++) {
dynamisch.removeChild(dynamisch.firstChild);
}//for
viele Grüße
Axel