ChrisB: Inhalt eines Knotens kopieren

Beitrag lesen

Hi,

var child_div = document.createElement("div");
for(var i=0; i<td.childNodes.length; i++){

td wäre, wenn es definiert wäre, eine Collection von tds, kein einzelnes Element.

child_div.appendChild(td.childNodes[i]);

Du versuchtst, eine Methode auf eine eine Collection anzuwenden.

Gut beobachtet.

Davon abgesehen sollte man noch die Problematik im Auge behalten, dass der IE childNodes nicht korrekt umsetzt, was Whitespace-Textknoten zwischen Elementen angeht. Das muss sich, je nach vorliegendem DOM, nicht auswirken, kann aber.

Wenn es sich um keine allzu aufwendige Aktion handelt (wenige Kindknoten/einmalige Anwendung), sollte man also besser etwas in der Art nutzen:

while(altesElement.firstChild) {  
  neuesElement.appendChild(altesElement.firstChild);  
}

Damit erwischt man auf jeden Fall alle Kindknoten.

Natürlich ist dieses „stückweise“ Umhängen von Knoten relativ langsam.
Sollte das also in größerem Umfang erfolgen sollen, so tut man gut daran, das ganze nicht „live“ im DOM zu machen, sondern mit einem noch nicht im DOM hängenden Element zu arbeiten, bzw. ggf. das zu bearbeitende erst aus dem DOM rauszunehmen (removeChild). Auch die Nuztung eines DocumentFragment kann sich bezahlt machen, wenn man in größerem Stil DOM-Manipulationen durchführt.

MfG ChrisB

--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]