neuen elementenbaum erstellen
Nick
- javascript
moin,
wie kann ich in javascript einen neuen elementenbaum erstellen und den in
eine variable abspeichern, sodass ich z.b. parallel zu document noch mehrere
andere haben kann?
Nick
@@Nick:
wie kann ich in javascript einen neuen elementenbaum erstellen und den in
eine variable abspeichern, sodass ich z.b. parallel zu document noch mehrere
andere haben kann?
Meinst du es so in der Art?
var body2 = document.createElement("body");
var p = document.createElement("p");
var textNode = document.createTextNode("Lorem ipsum dolor sit amet.");
p.appendChild(textNode);
body2.appendChild(p);
Austausch des alten body gegen body2:
document.body = body2;
Wobei ich mir nicht sicher bin, ob dabei der Speicher aufgeräumt wird.
Live long and prosper,
Gunnar
Lieber Gunnar,
Austausch des alten body gegen body2:
document.body = body2;
da würde ich dann doch lieber die alten Kindknoten alle (einzeln) aus document.body entfernen, um anschließend neue Kindknoten einzufügen...
Liebe Grüße,
Felix Riesterer.
Austausch des alten body gegen body2:
document.body = body2;
Das geht natürlich nicht. document.body ist bloß eine Referenz, und das einzige was du hier machst, ist die Objekteigenschaft auf ein anderes Objekt zeigen zu lassen (wenn der Browser das zulässt). Am DOM-Baum ändert sich da nichts. Wenn du den body-Elementknoten durch einen neuen austauschen willst, musst du schon die DOM-Methoden verwenden, hier z.B.
document.documentElement.replaceChild(neuerBody, document.body);
Mathias
@@molily:
Das geht natürlich nicht.
Hm, im Fuchs 2 geht’s. Andere hatte ich nicht getestet, mea culpa.
Live long and prosper,
Gunnar
Hm, im Fuchs 2 geht’s.
Das ist nicht unbedingt falsch, die body-Eigenschaft ist nicht readonly. Allerdings ist auch m.W. nirgends spezifiziert, was passieren soll, wenn man diese Eigenschaft beschreibt. Ich halte das eher für einen Fehler in DOM HTML, es gibt sonst keinen solchen Fall in DOM Core oder DOM HTML.
Mathias
wie kann ich in javascript einen neuen elementenbaum erstellen und den in
eine variable abspeichern, sodass ich z.b. parallel zu document noch mehrere
andere haben kann?
Wenn du einen Elementknoten mit removeChild oder replaceChild ersetzt, liefern dir diese beiden Methoden die alten Knoten zurück. Die kannst du in einer Variable speichern und solange diese Variable weiterlebt, hast du auch noch Zugriff auf den ausgehängten Knoten und seine Kindelemente. Darin kannst du dich herumhangeln, aber nicht z.B. mit document.getElementById suchen.
Mathias