Markus: nodeValue vs. innerHTML

Hallo!

So sieht das entsprechende HTML aus:

<dl>
        <dt>Name:</dt>
        <dd id="Name" class="monospace"> </dd>
        <dt>Alter:</dt>
        <dd id="Alter" class="monospace"> </dd>
    </dl>

Und nun das JS:

document.getElementById('Name').firstChild.nodeValue = 'Markus';
document.getElementById('Alter').firstChild.nodeValue = '15';

So funktioniert das im Firefox ganz gut, im Opera muss ich jedoch noch folgende Zeilen hinzufügen:
document.getElementById('Name').innerHTML = 'Markus';
// usw.

Warum ist dies nötig? Muss ich das immer zweifach machen? Und was ist eigentlich der Unterschied zwischen firstChild.data und firstChild.nodeValue? Eigentlich ist das doch das gleiche, oder?

Mfg,
Markus

  1. Hallo Markus,

    firstChild.nodeValue und firstChild.data funktionieren nur, wenn der Knoten existiert. In einigen Browserb genügt da ein Leerzeichen nicht. Ich fülle die Felder daher mit einem &nbsp;. Bei innerHTML ist das nicht nötig, da hier die entsprechenden Knoten erzeugt werden. Den Unterschied zwischen firstChild.nodeValue und firstChild.data kannst du im Selfhtml nachlesen.

    Gruß, Jürgen

    1. Hallo JürgenB.

      Den Unterschied zwischen firstChild.nodeValue und firstChild.data kannst du im Selfhtml nachlesen.

      Und der da wäre? Bis auf die Tatsache, dass sich die data-Eigenschaft in keiner DOM-Spezifikation (weder Level 1 noch Level 2 noch Level3) finden lässt, ist sie funktional mit der nodeValue-Eigenschaft identisch.

      Oder weißt du mehr?

      Einen schönen Freitag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. Hi!

        Bis auf die Tatsache, dass sich die data-Eigenschaft in keiner DOM-Spezifikation (weder Level 1  [...]) finden lässt, ...

        DOM Level 1: CharacterData.data?

        1. Hallo jeanlucpicard2.

          DOM Level 1: CharacterData.data?

          Ah, danke.

          Einen schönen Freitag noch.

          Gruß, Ashura

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
          [HTML Design Constraints: Logical Markup]
      2. Hallo Ashura,

        Oder weißt du mehr?

        nein. Daher kann ich auch nur Selfhtml zitieren:

        http://de.selfhtml.org/javascript/objekte/node.htm#node_value
        Speichert den Wert oder Inhalt eines Knotens. Bei Textknoten ist dies der Text, bei Attributknoten der zugewiesene Attributwert.

        http://de.selfhtml.org/javascript/objekte/node.htm#data
        Speichert Zeichendaten eines Knotens, sofern es sich um einen Textknoten handelt.

        Gruß, Jürgen

      3. Hallo,

        Bis auf die Tatsache, dass sich die data-Eigenschaft in keiner DOM-Spezifikation finden lässt

        Für so etwas gibt es die SELFHTML-Sidebar, die Spezifikations-Links zu allen in SELFHTML beschriebenen JavaScript-Features enthält:
        http://de.selfhtml.org/navigation/sidebars/ >
        http://de.selfhtml.org/navigation/sidebars/javascript.htm >
        http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-72AB8359

        Mathias