Javascript Elemente aus DOM entfernen

Gast #5339799
Lesenswert?

Hallo,
mein Code ist folgender (natürlich nur ein Ausschnitt):
1
var gruppe = document.getElementById("uebergeordnet");
2
var inhalt = document.getElementsByClassName("inhalt");
3
for(var i=0; i<inhalt.length; ++i)
4
     gruppe.removeChild(inhalt[i]);
Mein Ziel ist, dass alle Elemente, sie gehören alle der Klasse inhalt 
an, aus dem div uebergeordnet gelöscht werden, das funzt aber nicht so 
richtig, es werden nur die Hälfte aller Elemente gelöscht, das liegt, 
glaube ich, daran, dass die for-Schleife nicht oft genug durchgeführt 
wird, meine Frage wäre jetzt, warum.

Vielen Dank im Vorraus,
flipchartFresser
Gast #5339848
Lesenswert?

flipchartFresser schrieb:
> Hallo,
> [...]
> richtig, es werden nur die Hälfte aller Elemente gelöscht, das liegt,
> glaube ich, daran, dass die for-Schleife nicht oft genug durchgeführt
> wird, meine Frage wäre jetzt, warum.
>
> Vielen Dank im Vorraus,
> flipchartFresser

Vielleicht weil inhalt.length keine Konstante ist und sich durch

 gruppe.removeChild(inhalt[i]);

ändert?
#5340585
Lesenswert?

Jim M. schrieb:
> flipchartFresser schrieb:
>> glaube ich, daran, dass die for-Schleife nicht oft genug durchgeführt
>> wird, meine Frage wäre jetzt, warum.
>
> Weil Du sie falsch herum ausführst. Du müsstest von inhalt.length nach
> unten zu Null iterieren.
>
> Hausaufgabe: Finde heraus warum.

Hallo,

es sollte reichen:
1
while (Inhalt.length)
2
  gruppe.removeChild(inhalt[0]);

es sollte vor allem reichen, das Prinzip zu verdeutlichen.

Gruß,
Michael
Gast #5341185
Lesenswert?

Hallo,
ja ja, so dumme Fehler erkennt meistens nur ein "Externer", großes 
Dankeschön.
Außerdem habe ich auf w3c schools einen meiner Meinung nach noch 
besseren Code gefunden:
1
var uebergeordnet = document.getElementById("uebergeordnet");
2
while(uebergeordnet.hasChildNode())
3
     uebergeordnet.removeChild(uebergeordnet.firstChild);
Nochmal vielen Dank,
flipchartFresser

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren