Element nicht wiederverwertbar für appendChild()?
Martin Lenz
- javascript
Hallo,
ich versuche in ein Element (hier das mit id testel) Inhalt einzufügen (el ist bereits geholt, hier nicht gezeigt):
var text = document.createTextNode('Test');
var newp = document.createElement("p");
newp.appendChild(text);
el.appendChild(newp);
Das funktioniert. Nun soll das gleiche p-Element aber mehrfach an tel angefügt werden. An obigen Code einfach nochmal
el.appendChild(newp);
anzuhängen bringt aber nichts. Selbst
newp = document.createElement("p");
newp.appendChild(text);
el.appendChild(newp);
nicht. Nein, alle vier Zeilen müssen es sein.
Und genau das verstehe ich nicht, denn sowohl den Textnode als auch das Element sind doch schon erzeugt. Weshalb können die nicht einfach mehrfach angefügt werden?
Auf Erhellung hoffend,
Martin
Hi,
Nun soll das gleiche p-Element aber mehrfach an tel angefügt werden.
ah ja. Du willst das selbe Ei mehrfach essen. Das ist unappetitlich!
Und genau das verstehe ich nicht, denn sowohl den Textnode als auch das Element sind doch schon erzeugt.
Richtig, und sie befinden sich bereits im Dokumentbaum. Sollen sie irgendwo anders hin, müssen sie zunächst dort entfernt werden, wo sie gerade sind. So steht es geschrieben.
Cheatah
Hallo,
Richtig, und sie befinden sich bereits im Dokumentbaum. Sollen sie irgendwo anders hin, müssen sie zunächst dort entfernt werden, wo sie gerade sind. So steht es geschrieben.
In SelfHTML? Dann muß ich das wohl überlesen haben.
Ciao,
Martin
Hallo Martin,
die mit create... erzeugten Elemente sind einmalig. Wenn du mehrere gleiche Knoten erzeugen und an verschiedenen Stellen einhängen willst, musst Du sie mit clodeNode (http://de.selfhtml.org/javascript/objekte/node.htm#clone_node) vervielfältigen oder jedesmal neu erzeugen. In Deinem Beispiel hast Du zwar das p, nicht aber den Text neu erzeugt.
Gruß, Jürgen
Hi Jürgen,
die mit create... erzeugten Elemente sind einmalig. Wenn du mehrere gleiche Knoten erzeugen und an verschiedenen Stellen einhängen willst, musst Du sie mit clodeNode (http://de.selfhtml.org/javascript/objekte/node.htm#clone_node) vervielfältigen oder jedesmal neu erzeugen. In Deinem Beispiel hast Du zwar das p, nicht aber den Text neu erzeugt.
Ja, ich hatte nicht erwartet daß das Einwegobjekte sind. Es wird aber wohl nur ein Zeiger darauf ins Ziel eingefügt, dann wäre das zu verstehen.
Aber gut, newp zu erzeugen und dann
el.appendChild(newp.cloneNode(true));
wiederholt zu schreiben (oder in eine Schleife zu packen) funktioniert gut.
Gruß und Danke,
Martin