HTML Element Object: innerHTML vs nodeValue

  • Themenstarter Themenstarter Pseudozym
  • Beginndatum Beginndatum
P

Pseudozym

Hallo,

vielleicht kann mir einer der Spezialisten weiterhelfen, eine Verständnisfrage.

Unter http://www.w3schools.com/jsref/dom_obj_all.asp sehe ich,

- innerHTML Sets or returns the HTML contents (+text) of an element
- nodeValue Returns the value of the element

Wenn ich mir bei http://www.w3schools.com/dom/prop_document_nodevalue.asp das nodeValue property ansehe, dann steht da

- The nodeValue property sets or returns the value of a node, depending on its type

Im XML DOM kann man also offenbar schreiben und lesen, im HTML DOM nur lesen. Hm, ist das korrekt?

Denn ich habe einen Test gemacht, und einem neu erzeugten DIV-Element einen Inhalt mit innerHTML zugewiesen:
-----
var testtext="<a href=\"http://www.test.de\"><img src=\"http://www.test.gif\" alt=\'test\' border=\'0\' /></a>";
var cd = cocument.createElement("div");
document.getElementById('test').appendChild(cd);
cd.innerHTML=testtext;
-----
Wird auch alles direkt angezeigt im Browser angezeigt.

Das gleiche habe ich auch mit einer Zuweisung über nodeValue gemacht.
-----
var nv = document.getElementById('testdiv1').nodeValue;
nv=testtext;
-----
Der Inhalt des DIV-Elements wird allerdings nicht im Browser angezeigt - aber mit alert()!

Vielleicht kann mir dieses Phänomen einer erklären.
 
Hi,

SelfHTML schreibt dazu:
Speichert den Wert oder Inhalt eines Knotens. Bei Textknoten ist dies der Text, bei Attributknoten der zugewiesene Attributwert. Bei Elementknoten hat diese Eigenschaft den Wert null.
Quelle: SelfHTML

Willst du Textdaten setzen, musst du entsprechend darauf zugreifen:
Code:
document.getElementById('testdiv1').firstChild.nodeValue = testtext;
Das setzt jedoch voraus, dass im Zielelement bereits ein Textknoten existiert.

Weiterhin gilt zu beachten, dass die gewünschten Elemente (A, IMG) nicht implizit erzeugt werden wie bei innerHTML. Stattdessen wird der String so ausgegeben wie er vorliegt.

Sollen die Elemente erscheinen, so müssen sie mit createElement und appendChild erzeugt und eingehängt werden.

Ciao
Quaese
 

Neue Beiträge

Zurück