wahsaga: Layer visible und hidden

Beitrag lesen

hi,

Beim ersten Klick auf den Link nach dem Neuladen der Seite passiert gar nichts (der Layer bleibt unsichtbar). Erst beim zweiten Klick funktioniert dann das Ganze.

Du kannst über das style-Objekt nur Werte auslesen, die entweder zuvor per Javascript gesetzt worden sind, oder direkt über style-Attribut am betreffenden Element selber hinterlegt wurden.
Ob ein Objekt bspw. hidden ist, weil das durch einen zutreffenden Selektor im externen CSS so definiert ist, erfährst du über das style-Objekt nicht.

Aber wenn deine Objekte per default durch Angabe im externen CSS zunächst immer hidden sind [1], lässt sich das in diesem Falle recht einfach umgehen:

if (document.getElementById(layerChange).style.visibility=="hidden")
document.getElementById(layerChange).style.visibility="visible";
else document.getElementById(layerChange).style.visibility="hidden";

Drehe die Bedingung und Anweisungen einfach um:

  
if (document.getElementById(layerChange).style.visibility=="visible")  

> document.getElementById(layerChange).style.visibility="hidden";  
> else document.getElementById(layerChange).style.visibility="visible";  

Da, wie oben erklärt, zu Anfang der aktuelle Wert von style.visibility nicht ermittelt werden kann, ergibt die Bedingung false, und es geht direkt ins else, wo "visible" gesetzt wird.

Beim nächsten Aufruf der Funktion ergibt die Bedingung jetzt true - "visible" wurde per Javascript gesetzt, ist _jetzt_ also über style.visibility abfragbar - der Wert wird in "hidden" geändert; usw usf. bei weiteren Aufrufen.

[1] allerdings müsstest du dir dann überlegen, was bei Nutzern ohne JS passiert - sollen diese die Inhalte gar nicht zu sehen bekommen ...?

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }