Helmut Spindler: getElementsBy... Funktion unter NS <6 :( Alternativen?

Hallo!

Ich habe gerade ein sehr wichtiges Script für meine Homepage, und da das ganze auf dem ganzen aufbaut kann ich mich nicht davon trennen :)

ich benutze folgenden Code, wobei listID die variable ist die bei <div id="blah" style="display:show"> steht...

listID = document.getElementById(listID);
listID.style.display="none";

so versuche ich dann diesen div tag hiermit auszublenden (bzw. einzublenden).

geht in IE und NS6, jedoch unter einem älternen netscape nicht :/

ebenso document.body.getElementsByName(div) reagiert nicht :(

wie kann ich in einem älteren Netscape denn einen bestimmten Tag ansprechen??? Gibt es eine andere Funktion oder kann ich dem Div Tag einen Namen geben mit den ich ihn dann ansprechen kann...

das Problem ist dass ich aus der getElement Funktion nicht ganz schlau werde, bei einem debug Versuch zeigt er mir als Inhalt von ListID nach der Funktion nur "[object]"...

wäre wirklich super wenn mich wer aus meiner miserablen lage befreien könnte und mir abhilfe schafft - ich bin halt doch nicht so der begabte ;)

danke schonmal im voraus für hilfe...

  1. Hoi !

    geht in IE und NS6, jedoch unter einem älternen netscape nicht :/

    ebenso document.body.getElementsByName(div) reagiert nicht :(

    wie kann ich in einem älteren Netscape denn einen bestimmten Tag ansprechen??? Gibt es eine andere Funktion oder kann ich dem Div Tag einen Namen geben mit den ich ihn dann ansprechen kann...

    Netscape 4 kann kein getElementById. Dafür kann er (oder behauptet es zumindest) document.layers.

    Allerdings kannst Du hier lang nicht soviele Eigenschaften ändern wie mit getElementById. Zudem bekommst Du mit document.layers nur Zugriff auf Divs und Layer.

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

    Mein Tip:
    if(document.layers) alert("Besorg Dir einen vernünftigen Browser !");

    ;-)

    Ciao,

    Harry

    1. hi

      Mein Tip:
      if(document.layers) alert("Besorg Dir einen vernünftigen Browser !");

      nicht schon wieder das Thema...:)
      meiner ist übrigens _so_ verbuggt, dass er den alert() auch nicht auf die Reihe bringt *knurr*

      Grüße aus Bleckede

      Kai

    2. Allerdings kannst Du hier lang nicht soviele Eigenschaften ändern wie mit getElementById. Zudem bekommst Du mit document.layers nur Zugriff auf Divs und Layer.

      Dann wäre das ganze ja eh gelöst, nur eine Frage bleibt:
      Wie spreche ich die DIV's an - wüsste jetzt nicht genau wie... habs wie unten probiert, so ging es nicht...

      function EinAus(Nummer)
        {
         if(window.document.layers[Nummer].visibility == "show")
          { window.document.layers[Nummer].visibility = "hide"; return; }
         if(window.document.layers[Nummer].visibility == "hide")
          { window.document.layers[Nummer].visibility = "show"; return; }
        }

      <div name="GelberLayer" left="50" top="30" width="200" height="200"
       visibility="show" bgcolor="#FFFFE0">
      <a href="javascript:EinAus(1)">anderer Layer ein/aus</a>
      </layer>
      <div name="LilaLayer" left="250" top="30" width="200" height="200"
       visibility="show" bgcolor="#FFE0FF">
      <a href="javascript:EinAus(0)">anderer Layer ein/aus</a>
      </layer>

      1. hm es will nicht funktionieren hab schon einiges probiert...
        seid ihr sicher das man damit div Objekte angsprechen kann?

        Allerdings kannst Du hier lang nicht soviele Eigenschaften ändern wie mit getElementById. Zudem bekommst Du mit document.layers nur Zugriff auf Divs und Layer.

        Dann wäre das ganze ja eh gelöst, nur eine Frage bleibt:
        Wie spreche ich die DIV's an - wüsste jetzt nicht genau wie... habs wie unten probiert, so ging es nicht...

        function EinAus(Nummer)
          {
           if(window.document.layers[Nummer].visibility == "show")
            { window.document.layers[Nummer].visibility = "hide"; return; }
           if(window.document.layers[Nummer].visibility == "hide")
            { window.document.layers[Nummer].visibility = "show"; return; }
          }

        <div name="GelberLayer" left="50" top="30" width="200" height="200"
        visibility="show" bgcolor="#FFFFE0">
        <a href="javascript:EinAus(1)">anderer Layer ein/aus</a>
        </layer>
        <div name="LilaLayer" left="250" top="30" width="200" height="200"
        visibility="show" bgcolor="#FFE0FF">
        <a href="javascript:EinAus(0)">anderer Layer ein/aus</a>
        </layer>

      2. Hoi !

        <div name="GelberLayer" left="50" top="30" width="200" height="200"
        visibility="show" bgcolor="#FFFFE0">
        <a href="javascript:EinAus(1)">anderer Layer ein/aus</a>
        </layer>

        Wenn Du ein <div> aufmachst, solltest Du auch ein </div> hinterher zumachen ... und nicht ein </layer> !

        Ciao,

        Harry

        1. Wenn Du ein <div> aufmachst, solltest Du auch ein </div> hinterher zumachen ... und nicht ein </layer> !

          Sorry hatte ich in der Eile übersehen als ich den Code hier geposted habe (war nur schnell reinkopiet aus SelfHTML) das Beispiel Script hat nicht funktionieret...

          <html><head><title>Test</title>
          <script type="text/javascript">
          <!--
            function EinAus(Nummer)
            {
             if(window.document.layers[Nummer].visibility == "show")
              { window.document.layers[Nummer].visibility = "hide"; return; }
             if(window.document.layers[Nummer].visibility == "hide")
              { window.document.layers[Nummer].visibility = "show"; return; }
            }
          //-->
          </script>
          </head><body>
          <div name="GelberLayer" left="50" top="30" width="200" height="200"
           visibility="show" bgcolor="#FFFFE0">
          <a href="javascript:EinAus(1)">anderer Layer ein/aus</a>
          </div>
          <div name="LilaLayer" left="250" top="30" width="200" height="200"
           visibility="show" bgcolor="#FFE0FF">
          <a href="javascript:EinAus(0)">anderer Layer ein/aus</a>
          </div>

          so ist der Code - Trotzdem funktioniert er nicht...

          "window.document.layers ist kein Objekt..."

          Das ganze mit window.document.div[Nummer].visibility oder mit window.document.divs[Nummer].visibility anzusprechen funktioniertl eider auch nicht.

          1. hallo helmut

            <html><head><title>Test</title>

            [..]

            </head><body>
            <div name="GelberLayer" left="50" top="30" width="200" height="200"
            visibility="show" bgcolor="#FFFFE0">
            <a href="javascript:EinAus(1)">anderer Layer ein/aus</a>
            </div>
            <div name="LilaLayer" left="250" top="30" width="200" height="200"
            visibility="show" bgcolor="#FFE0FF">
            <a href="javascript:EinAus(0)">anderer Layer ein/aus</a>
            </div>

            schreib in beide divs noch folgendes rein:
            style="position:absolute;top:100px;left:100px;visibility:hide;"

            mit top und left kannst du natürlich spielen.

            netscape 4.x betrachtet ein div nur als layer-objekt, wenn man das ding absolute(? evtl. geht auch relativ) positioniert.
            visibility gehört auch ins style attribute.

            hoffe geholfen zu haben.
            büdde & gruss

            Siramon,
                 ja der aus der schweiz