Wib: Nodes entleeren

Hi,

ist dies der beste Weg, um ein <div> mit der id "foo" zu entleeren, damit man ihm im weiteren Verlauf des Scripts wieder irgendetwas an Daten anhängen kann?

var loc = document.getElementById("foo");
var childNodesLength = loc.childNodes.length;
for(var i = 0; i < childNodesLength; ++i) {
  loc.removeChild(loc.childNodes[0]); // Die [0] ist Absicht. Nicht [i]!
}

Wie könnte eine elegantere Lösung aussehen?

WIB

  1. Hi,

    ist dies der beste Weg, um ein <div> mit der id "foo" zu entleeren,

    m. E. JA!

    var loc = document.getElementById("foo");
    var childNodesLength = loc.childNodes.length;
    for(var i = 0; i < childNodesLength; ++i) {
      loc.removeChild(loc.childNodes[0]); // Die [0] ist Absicht. Nicht [i]!
    }
    Wie könnte eine elegantere Lösung aussehen?

    while(document.getElementById("FOO").firstChild)
        document.getElementById("FOO").removeChild(document.getElementById("FOO").firstChild)

    also das Gleiche nur in zwei Zeilen :þ

    Gruß aus Berlin!
    eddi

  2. Hallo,

    var loc = document.getElementById("foo");
    var childNodesLength = loc.childNodes.length;
    for(var i = 0; i < childNodesLength; ++i) {
      loc.removeChild(loc.childNodes[0]); // Die [0] ist Absicht. Nicht [i]!
    }

    Wie könnte eine elegantere Lösung aussehen?

    div-Element ohne Kindknoten klonen (Parameter false) und dann den Elementknoten selbst durch das geklonte Objekt ersetzen:

    var loc = document.getElementById("foo");
    var clone=loc.cloneNode(false);
    loc.parentNode.replaceChild(clone,loc);

    Hinweis: Das loc-Objekt fuer weitere Zugriff ggf. neu via document.getElementById("foo") zuweisen.

    MfG, Thomas