Forum: PC-Programmierung Javascript Elemente aus DOM entfernen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von flipchartFresser (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Jim M. schrieb:
> von inhalt.length

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

von Michael A. (micha54)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.