Franz Schleier: Zugriff auf verschachtelte Elemente (<div>&<span>) in Netscape 4

Hi,

ich kann mit Netscape 4 auf ein <span> der ersten Ebene mit JavaScript so zugreifen:

// Beispiel 1 - JavaScript-Teil
alert(document.ids.rahmenspan.paddingtop);

// Beispiel 1 - HTML-Teil
<span id="rahmenspan">
</span>

Wenn dieser <span> aber innerhalb eines <div> liegt, dann geht das nicht mehr:

// Beispiel 2 - HTML-Teil
<div id="rahmen">
   <span id="rahmenspan">
   </span>
</div>

Warscheinlich wegen verschachtelter Ebenen. Im Forum und verschiedenen Dokumentationen habe ich zwar ein paar Antworten/Anleitungen gefunden, die in meinem Fall (<div> und <span>) aber so nicht funktioniert haben. Z.B.

// Beispiel 2 - JavaScript-Teil
alert(document.ids.rahmen.document.ids.rahmenspan.paddintop);

Das JavaScript-Beispiel geht so leider nicht... Wie müsste der JavaScript-Teil korrekt aussehen?

Danke Franz

  1. Moin!

    ich kann mit Netscape 4 auf ein <span> der ersten Ebene mit JavaScript so zugreifen:

    Positionierte DIV-Bereiche bilden in Netscape 4 eigenständige Dokumente. Nicht positionierte DIV-Bereiche tun dies nicht! Die Verschachtelung hat also nur im Ausnahmefall damit etwas zu tun.

    // Beispiel 1 - JavaScript-Teil
    alert(document.ids.rahmenspan.paddingtop);

    Was ist "ids"?

    // Beispiel 1 - HTML-Teil
    <span id="rahmenspan">
    </span>

    Im HTML-Teil ist das jedenfalls nicht zu finden.

    Wenn dieser <span> aber innerhalb eines <div> liegt, dann geht das nicht mehr:

    // Beispiel 2 - HTML-Teil
    <div id="rahmen">
       <span id="rahmenspan">
       </span>
    </div>

    document.layers('rahmen').document.ids.rahmenspan...

    Alles ohne Gewähr für die buchstabengetreue Richtigkeit.

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
    1. Positionierte DIV-Bereiche bilden in Netscape 4 eigenständige Dokumente. Nicht positionierte DIV-Bereiche tun dies nicht! Die Verschachtelung hat also nur im Ausnahmefall damit etwas zu tun.

      Dann wäre folgendes z.B. ein positioniertes <div> und müsste demnach anders angesprochen werden?
      <div id="rahmen" name="rahmen" style="position:absolute; border:2px solid; visibility:hidden; border-color:#FF0000; top:0px; left:0px; width:100px; height:100px;">

      Wenn ja - wie?

      // Beispiel 1 - JavaScript-Teil
      alert(document.ids.rahmenspan.paddingtop);

      Was ist "ids"?

      "Netscape Navigator supports several properties and methods for setting CSS properties from JavaScript: document.tags, document.ids, document.classes, and document.contextual."
      http://www.webreference.com/js/column72/5.html

      // Beispiel 2 - HTML-Teil
      <div id="rahmen">
         <span id="rahmenspan">
         </span>
      </div>

      document.layers('rahmen').document.ids.rahmenspan...

      Hm - da kommt dann folgendes:
      JavaScript Error: document.layers is not a function

      Grüße Franz

      1. Moin!

        Positionierte DIV-Bereiche bilden in Netscape 4 eigenständige Dokumente. Nicht positionierte DIV-Bereiche tun dies nicht! Die Verschachtelung hat also nur im Ausnahmefall damit etwas zu tun.

        Dann wäre folgendes z.B. ein positioniertes <div> und müsste demnach anders angesprochen werden?
        <div id="rahmen" name="rahmen" style="position:absolute; border:2px solid; visibility:hidden; border-color:#FF0000; top:0px; left:0px; width:100px; height:100px;">

        Exakt so ist es. Er hat etwas anderes als position:static definiert, also ist er positioniert und bildet ein eigenständiges Dokument.

        Was ist "ids"?

        "Netscape Navigator supports several properties and methods for setting CSS properties from JavaScript: document.tags, document.ids, document.classes, and document.contextual."
        http://www.webreference.com/js/column72/5.html

        Was es nicht alles gibt. Und es wird immer unwichtiger, weil Netscape 4 immer weiter aussterben wird. Ich bin nicht traurig drum.

        // Beispiel 2 - HTML-Teil
        <div id="rahmen">
           <span id="rahmenspan">
           </span>
        </div>

        document.layers('rahmen').document.ids.rahmenspan...

        Hm - da kommt dann folgendes:
        JavaScript Error: document.layers is not a function

        Ich schrieb ja auch:

        document.layers('rahmen').document.ids.rahmenspan...

        Alles ohne Gewähr für die buchstabengetreue Richtigkeit.

        Die Klammern sind falsch. Eckige Klammern gehören da hin.

        http://selfhtml.teamone.de/javascript/objekte/layers.htm

        - Sven Rautenberg

        --
        Die SelfHTML-Developer sagen Dankeschön für aktuell 20885,68 Euro Spendengelder!
        1. Hi,

          Ich schrieb ja auch:

          document.layers('rahmen').document.ids.rahmenspan...
          Alles ohne Gewähr für die buchstabengetreue Richtigkeit.
          Die Klammern sind falsch. Eckige Klammern gehören da hin.

          Ja da haste allerdings recht ;-).

          mit
          alert(document.layers['rahmen'].document.ids.rahmenspan.paddingtop);
          klappt das jetzt wie gewünscht! Vielen Dank an Dich Sven!!! :-)

          Was es nicht alles gibt. Und es wird immer unwichtiger, weil Netscape 4 immer weiter aussterben wird. Ich bin nicht traurig drum.

          Oh Du sprichst mir aus der Seele!!! Ich verbrate exorbitant viel Zeit mit den ganzen lästigen NN4 Anpassungen! Aber es gibt halt leider immer noch welche, die den brauchen/wollen/haben/haben müssen und auf die paar kann ich momentan leider nicht verzichten. Aber es wird jetzt wirklich langsam mal Zeit, sich davon zu lösen...

          Schöne Grüße aus dem Breisgau
             Franz

          1. Hallo Franz,

            alert(document.layers['rahmen'].document.ids.rahmenspan.paddingtop);

            da du ja, wenn ich dein letztes Posting im anderen thread richtig
            verstanden habe, evtl. alles ins CSS packst statt Inlinestyles zu verwenden:

            <style>
            #rahmen2span{paddingtop:20px;}
            </style>
            <div id="rahmen" name="rahmen" style="position:absolute; border:2px solid; visibility:hidden; border-color:#FF0000; top:0px; left:0px; width:100px; height:100px;">
            <span id="rahmenspan" style="paddingtop:20px;">
            test
            </span>
            <span id="rahmen2span">
            test
            </span>
            </div>
            <script>
            alert(document.layers['rahmen'].document.ids.rahmenspan.paddingtop);
            alert(document.ids.rahmen2span.paddingtop);
            </script>

            Mit ids und CSS erhälst du also auch einfach ein Array der gesetzten
            Stylewerte ohne die Verschachtelung der Layer zu berücksichtigen.

            Das Beispiel http://www.lipfert-malik.de/webdesign/tutorial/bsp/netscapeRahmen.html
            hast du ja vermutlich gefunden (das u.U. mögliche Lade- oder Resizeproblem liegt vmtl. an
            der Art der Einbindung des impressums und nicht am eigentlichen Beispiel).

            Grüsse

            Cyx23