Dienstag, 30. November 2010

JavaScript/DOM: Verhalten von appendChild()

Folgendes ist mir bei der JavaScript-Entwicklung aufgefallen.

Verwendet man die Methode appendChild(), um ein vorher bspw. mittels getElementById() (oder der PrototypeJS- bzw. JQuery-Funktion "$()") aus dem DOM geholtes Element an anderer Stelle oder in ein anderes Dokument (ein anderes Browserfenster) einzufügen, wird das an der ursprünglichen Stelle stehende Element gelöscht (!).

Dies ist kein Bug, sondern laut DOM-Spezifikation so gewollt.
If the newChild is already in the tree, it is first removed.
Soll das Element an der ursprünglichen Stelle bestehen bleiben, ist diese zunächst mittels der Methode cloneNode() zu duplizieren.

Keine Kommentare: