Forum: PC-Programmierung Javascript Elemente aus DOM entfernen


von flipchartFresser (Gast)


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

von Required field (Gast)


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?

von Jim M. (turboj)


Lesenswert?

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.

von Jim M. (turboj)


Lesenswert?

Jim M. schrieb:
> von inhalt.length

Off-by-one: von inhalt.length -1

von Michael A. (micha54)


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

von flipchartFresser (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.