Penner: Programmieren für IE4

Hallo,

ich versuche mit dem all-Objekt auf ein verschachteltes div (im Beispiel wanted-div) zuzugreifen:

<div id="div1">
<div id"wanted-div">
</div></div>

Mit Dom-W3c-Standard geht's so:

obj=document.getElementById('div1').getElementsByTagName('div')['wanted-div'];

Wie geht's mit dem all-Objekt von IE4?
Im Werk es Meisters ist keine Lösung zu finden.

Thx

Penner

  1. Hi,

    Hallo,

    ich versuche mit dem all-Objekt auf ein verschachteltes div (im Beispiel wanted-div) zuzugreifen:

    <div id="div1">
    <div id"wanted-div">

    ^  = nicht vergessen!

    </div></div>

    obj = document.all['wanted-div'] //?

    Mit Dom-W3c-Standard geht's so:

    obj=document.getElementById('div1').getElementsByTagName('div')['wanted-div'];

    oder direkt:
    obj = document.getElementById('wanted-div');

    (id muß ja dokumentweit eindeutig sein, also spielt die Schachtelung keine Rolle...)

    cu,
    Andreas

  2. hi,

    ich versuche mit dem all-Objekt auf ein verschachteltes div (im Beispiel wanted-div) zuzugreifen:

    <div id="div1">
    <div id"wanted-div">
    </div></div>

    obj=document.all["wanted-div"];

    obj=document.getElementById('div1').getElementsByTagName('div')['wanted-div'];

    warum nicht: obj=document.getElementById("wanted-div");
    ID ist doch vorhanden.

    Gruesse  Joachim

  3. Hallo Penner,

    Mit Dom-W3c-Standard geht's so:

    obj=document.getElementById('div1').getElementsByTagName('div')['wanted-div'];

    Nein. Damit geht es so:
    document.getElementById("wanted-div")

    Jedes Element, das ein id-Attribut hat, ist direkt ansprechbar.

    Und bei Anwendung von document.getElementsByTagName() spielen Verschachtelungen auch keine Rolle. Da wird einfach gezaehlt, das wievielte Element eines Namens im Dokument gewuenscht wird. Denn fuer jeden vorkommenden Elementnamen gibt es einen einfachen, eindimensionalen Array.

    Wie geht's mit dem all-Objekt von IE4?

    document.all("wanted-div")

    Im Werk es Meisters ist keine Lösung zu finden.

    Keine Ahnung, welches du meinst. Aber ich kenne zumindes eins, was nicht weit weg ist von hier, und wo das alles sehr wohl klar und deutlich erklaert wird. Lesen muss man halt selbst.

    viele Gruesse
      Stefan Muenz

    1. Korrektur

      document.all("wanted-div")

      Nein: document.all.wanted_div
      Und bei Verwendung in JavaScript bitte auch keine Bindestriche im id-Namen vergeben ...

      viele Gruesse
        Stefan Muenz

      1. Korrektur

        Nein: document.all.wanted_div

        Hallo,

        Danke für die schnellen Antworten.
        Ich bin aber darauf gekommen, dass beim IE gar keine Definitionen dieser Art notwendig sind.
        IE kennt sowieso schon immer alle divs, die im Dokument vorkommen. Man braucht also nur zu schreiben:

        wanted_div.blahblah

        CU

        Penner

  4. Hallo.

    Na ja, wenn's kein document.getElementById gibt, kann man sich ja einfach eins basteln:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html><head><title>document.all => document.getElementById</title>
    <script type="text/javascript">
    <!--
     if(document.all && !document.getElementById)
      {
       function document.getElementById(id)
        {
         return document.all[id];
        }
      }
    //-->
    </script>
    </head><body>
    <a href="#" onclick="document.getElementById('buh').style.visibility = 'visible'">BUH?</a>
    <h1 id="buh" style="visibility:hidden;">BUH!</h1>
    </body></html>

    Hat dann den Vorteil, dass man nicht alles für document.getElementById und für document.all schreiben muss, sondern sich einfach auf document.getElementById beschränken kann. Ob und inwiefern das Praxistauglich ist, müsste man natürlich ausprobieren, aber in Bezug auf style sollte es da keine Prbleme geben.

    Gruß
    Norbert

    1. Hallo.

      function document.getElementById(id)

      Hallo,

      Ich würde meinen, der Punkt ist ein Operator, und im Funktionsnamen darf kein Operator ausser dem call-Operator () enthalten sein?

      CU

      Penner

      1. Hallo.

        function document.getElementById(id)

        Ich würde meinen, der Punkt ist ein Operator, und im Funktionsnamen darf kein Operator ausser dem call-Operator () enthalten sein?

        Der Punkt mag ein Operator sein, aber im Funktionsnamen (= getElementById) ist kein Punkt drin. getElementById ist eine Methode die dem document-Objekt untergeordnet ist/wird.
        Das ist bei normalen Funkionen doch auch so, du kannst ja auch

        function window.MeineFunktion()

        schreiben, was das selbe wie

        function MeineFunktion()

        ist, da aber sowieso (fast) alles dem window-Objekt untergeordnet ist, kannst du das window eben auch weg lassen.

        Gruß
        Norbert