Dies steht im Zusammenhang mit der Frage javascript cloneNode and properties.Warum schließt cloneNode benutzerdefinierte Eigenschaften aus?
Ich sehe das gleiche Verhalten. Node.cloneNode kopiert nicht über alle Eigenschaften, die ich selbst hinzufügen (Code aus Original-Beitrag):
var theSource = document.getElementById("someDiv")
theSource.dictator = "stalin";
var theClone = theSource.cloneNode(true);
alert(theClone.dictator);
theClone
keine Eigenschaft enthält „Diktator“.
Ich konnte keine Erklärung dafür finden, warum dies der Fall ist. Die documentation on MDN besagt, dass cloneNode
"alle seine Attribute und ihre Werte kopiert", eine Zeile, die direkt aus der DOM specification selbst übernommen wird.
Das scheint mir kaputt zu sein, da es fast unmöglich ist, eine tiefe Kopie eines DOM-Baums mit benutzerdefinierten Eigenschaften zu erstellen.
Fehle ich hier etwas?
Ich würde wahrscheinlich nur vermeiden, cloneNode zu verwenden, und wenn ich etwas klonen möchte, würde ich meine eigene Klonfunktion implementieren, um das Element zu klonen, wie ich es für richtig halte (zum Beispiel könnte man mit dem Konstruktor einen neuen erzeugen) Kopieren Sie Attribute, Kopiereigenschaften und möglicherweise andere benutzerdefinierte Sachen, abhängig von Ihrem speziellen Fall). – trusktr