Christoph Zurnieden: rekursives loeschen von childs - funktioniert nicht

Beitrag lesen

Hi,

oder gibt es eine andere Methde alle Elemente unter einem Element zu loeschen?

Ja.
Ich weiß nicht ob Thomas Meinike das selbst erfunden hat, aber folgende Idee habe ich bei ihm zuerst gefunden und natürlich sofort geklaut:

function removeAllChildsFromNode(_nodeId){
  var arnold = document.getElementById(_nodeId);
  var adam   = arnold.cloneNode(false);
  arnold.parentNode.replaceChild(adam,arnold);
}

Die Funktion "arnold.cloneNode(false)" kopiert "arnold" _ohne_ den Inhalt nach "adam" (wegen des Argumentes "false". "true" würde entsprechend mit Inhalt kopieren). Somit haben wir eine leere Kopie des übergebenen Knotens und können das Original einfach damit ersetzen. Laut einigen vom Kollegen Meinike durchgeführten Benchmarks ist dieses Vorgehen sogar eindeutig schneller als eine Schleife. Er hatte das allerdings mit Adobes SVG-Viewer getestet, wenn ich mich recht entsinne. Sollte aber nichts ausmachen.
Und wenn doch kann es nicht viel sein und wird durch die Eleganz obiger Lösung sowieso mehr als wettgemacht! ;-)

BTW: Die erste Zeile kann natürlich ausgelassen werden, wenn die Adresse des Knotens schon bekannt ist und direkt übergeben werden kann.

so short

Christoph Zurnieden