xproggy: innerHTML in DOM???

Wenn man von JavaScript aus formatierten Text in ein <div>-Element schreiben (bzw. ändern) will, notiert man für den Internet Explorer:

document.all["IdDesDivElements"].innerHTML = "<b><i>formatierter</i> Text</b>";

und für Netscape (ältere Versionen):

document["IdDesDivElements"].innerHTML = "<b><i>formatierter</i> Text</b>";

aber wie muss man es DOM-gerecht notieren? Denn der Netscape 6.0 Browser unterstütz zum Beispiel nur noch das DOM-Prinzip, nicht mehr die alte Netscape-Syntax.

  1. Hallo,

    Wenn man von JavaScript aus formatierten Text in ein <div>-Element schreiben (bzw. ändern) will, notiert man für den Internet Explorer:

    document.all["IdDesDivElements"].innerHTML = "<b><i>formatierter</i> Text</b>";

    Nein, das macht man seit 1999 nicht mehr bzw. nur noch als Fallback fuer den IE4. Besser ist:

    document.getElementById("IdDesDivElements").innerHTML = "<b><i>formatierter</i> Text</b>";

    aber wie muss man es DOM-gerecht notieren? Denn der Netscape 6.0 Browser unterstütz zum Beispiel nur noch das DOM-Prinzip, nicht mehr die alte Netscape-Syntax.

    Wie beschrieben klappt das auch mit Netscape 6+ und Mozilla. innerHTML ist zwar (noch?) keine DOM-Syntax, aber dennoch praktischer als dasselbe mit DOM-Methoden zu realisieren. Insofern ist es IMHO zu begrueßen, dass das Mozilla-Team diese Technik aufgegriffen hat.

    MfG, Thomas

  2. Gugucks,

    document.all["IdDesDivElements"].innerHTML = "<b><i>formatierter</i> Text</b>";

    So musst du das für den IE 4 machen.

    Sowohl der IE als auch Netscape 6 / Mozi verstehen:
    document.getElementById("IdDesDivElements").innerHTML;
    Mit anderen Worten, innerHTML ist Standard.

    Gruß, Uschi

    1. Hallo,

      Sowohl der IE als auch Netscape 6 / Mozi verstehen:
      document.getElementById("IdDesDivElements").innerHTML;
      Mit anderen Worten, innerHTML ist Standard.

      Dann ist marquee ab heute auch Standard ;-).

      MfG, Thomas

  3. Hallo,

    aber wie muss man es DOM-gerecht notieren? Denn der Netscape 6.0 Browser unterstütz zum Beispiel nur noch das DOM-Prinzip, nicht mehr die alte Netscape-Syntax.

    Also der alte NS hat kein innerHTML unterstützt.

    function fnSetInnerHTML (elm, html)
    {
      if (document.layers) {      //<-- NS 4
        elm.document.write(html);
        elm.document.close();
      }
      else if (typeof(elm.innerHTML) != 'undefined') { //<-- neuere Browser
        elm.innerHTML = html;
      }
    }
    <

    Die Frage, die du dir stellst, sollte eher "Wie komme ich an das Element (elm, DIV/LAYER) ran" lauten. Das Problem ist , dass nicht alle Browser das DOM vom W3C unterstützen, sprich ihre eigene Implementierung für den Zugriff auf ein Element besitzen.

    Schau mal auf <developer.netscape.com/>, dort werden im unteren Abschnitt Cross-Browser-Scripts vorgestellt, welche eine Funktion beinhalten (xbGetElementById und xbGetElementsByName), die einen "allgemeingültigen" Zugriff auf ein Element ermöglichen, sprich für die weitverbreitesten Browser (IE, NS, Gecko (Moz, NS6+) und Opera). Allgemeingültigkeit bedeutet hier, dass diese Funktionen die browserspezifischen Gegebenheiten beachten, sprich ob ein Browser schon das DOM unterstützt oder ob auf proprietäre Eigenschaften zurückgegriffen werden muss.

    hth
    torsten