document.all und document.layers
Fridtjof
- javascript
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.
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
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();".