Fridtjof: document.all und document.layers

Hallo, ich hab hier gerade einen kleinen Schönheitsfehler.
Kann mir jemand sagen wie man die von mir großgeschriebenen Unterobjekte des document-Objektes durch vaiablen ersetzen kann?

document.ALL.wert.STYLE.visibility
document.LAYERS.wert.visibility

Dadurch könnte ich meinen JavaScript-Code erheblich verkleinern können.
p.s. Wenn sich jemand sicher ist, das dies nicht möglich ist, am besten auch bescheid sagen.

Danke schon mal.

  1. Hallo Fridtjof!

    Hallo, ich hab hier gerade einen kleinen Schönheitsfehler.
    Kann mir jemand sagen wie man die von mir großgeschriebenen Unterobjekte des document-Objektes durch vaiablen ersetzen kann?

    document.ALL.wert.STYLE.visibility
    document.LAYERS.wert.visibility

    Grundsätzlich natürlich mit eval:

    ALL="all";
      STYLE="style";

    eval ("document."+ALL+".wert."+STYLE+".visibility" ....);

    aber wahrscheinlich willste eher sowas :

    if(document.getElementById)  // Standard
      myelement=document.getElementById(elementname).style
    else if(document.layers)     // NN 4
      myelement=document.layers[elementname].style;
    else                         // IE 4
      myelement=document.all[elementname].style;

    um damit
      myelement.visibility="hidden";

    zu machen ('hide' und 'hidden' bzw. 'show' und 'visibile' müssen auch in eine  Variable, aber das sollte klar sein.)

    Schau dir mal (aktueller)
    http://wwwtech.de/index.php3?file=dhtml/dhtmllib/index.html&template=templates/dhtmllib.txt&n=1&pos=
    und (leider nur NN4.xx und IE)
    http://www.dansteinman.com/dynduo/
    an, da findest mehr dazu.

    Gruss,
     Carsten

    1. Danke, mal kucken ob sich damit noch ein bisschen machen lässt,
      habs aber erstmal so gelöst.

      <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" >
      <!--
         var w = 4; // Der Wert der Variablen "w" muß der Anzahl der Menuepunkte entsprechen.
         var x = w;
         var y = "pop" + x;
         var aus, an, v, i;

      function start()
         {i = w;
          v = aus;
          if (document.layers)
          {aus = "hide";
           an = "show";
           submenues(0);
          }else
          {aus = "hidden";
           an = "visible";
           submenues(0);
          }}

      function submenues(z)
         {if (x > 0)
          {i -= 1;
           visibilityB(z);
           document.layers[y].visibility = v;
           x -= 1;
           y = "pop" + x
           submenues(z);
          }else
          {x = w;
           i = z;
           y = "pop" + x
          }}

      function visibilityA(z)
         {if (i == z)
          {start();
          }else
          {submenues(z);
          }}

      function visibilityB(z)
         {if (x == z)
          {v = an;
          }else
          {v = aus;
         }}

      function visibilityC(z)
         {if (document.layers)
          {document.layers[y].visibility = v;
          }else
          {document.all[y].style.visibility = v;
         }}

      //-->
        </SCRIPT>

      p.s. Mit diesem Script kann man per
      onClick="JavaScript:visibilityA(vortlaufende Nummer, beginnend bei 1);"
       z.B. Submenüs öffnen und durch wiederholtes anklicken wieder schließen. Es kann immer nur ein Submenü geöffnet sein. Außerdem benötigt es im BODY-Tag
      onLoad="JavaScript:start();".