Jan: 12 Ebenen, durch klick auf eins, immer die anderen 11 ausschalten

Hallo Leute!

Nun mal gleich zu meinem Problem: Ich habe 12 Monate in einer Reihe, wenn auf einen Monat geklickt wird, wird dieser "markiert" (neue Ebene mit schwarzem Background). Wenn nun ein neuer Monat "markiert" wird, soll die andere Markierung verschwinden. Es sollte also einfach nur ein Monat markiert sein.
Nun, ich hab ein Script das in dieser Hinsicht funktioniert - Es werden einfach immer alle Ebenen außer das angeklickte auf hide gesetzt.
Doch habe ich noch eine Reihe von Jahreszahlen (nur 2), bei denen auch die Ebenen gewechselt werden.
Also geht es nun nicht mehr, bei Aktivierung einer Ebene, alle anderen auszuschalten.
Bei den Jahreszahlen hab ich es nun so gelöst: Ich löse bei klicken 2 Funktionen aus -> "show(1); hide(2);" und umgekehrt.
Bei den 2 Jahreszahlen ist das eben noch recht leicht.
Aber ich kann bei den Monaten nicht "hide(2); hide(3); hide(4)...." ausführen lassen, dass wäre doch viel zu lang.
Weiß jemand eine geschicktere Lösung?

Hier mal das sehr gut funktionierende Script für die Jahre:

<SCRIPT LANGUAGE="JavaScript" TYPE="TEXT/JAVASCRIPT">
<!--

var ebenenref;

function show(Nr)
{
ebenenref="jahr"+Nr;
if (document.getElementById)
{
document.getElementById(ebenenref).style.visibility="visible";
}
if (document.layers)
{
document.layers[ebenenref].visibility="visible";
}
if (document.all && !document.getElementById)
{
document.all[ebenenref].style.visibility="visible";
}
}

function hide(Nr)
{
ebenenref="jahr"+Nr;
if (document.getElementById)
{
document.getElementById(ebenenref).style.visibility="hidden";
}
if (document.layers)
{
document.layers[ebenenref].visibility="hidden";
}
if (document.all && !document.getElementById)
{
document.all[ebenenref].style.visibility="hidden";
}
}

//-->
</SCRIPT>

Am meisten interessiert mich natürlich die hide-Funktion. Wie kann ich das von mir gewünschte da richtig einbauen?

Gruß, Jan

  1. Hi
    Hier mal eine Idee:
    Wie waers wenn du die namen aller deiner 12 Ebenen in einen Array schreibst.
    Also:
    monate=new Array("Januar","Februar","Maerz","April","Mai"......);
    (Das heisst:  in diesem Fall sind die Namen deiner Ebenen  "Januar" ... "Dezember")
    dann die Funktion hide11: (Nr ist die Nummer die nicht! unsichtbar gemacht wird)
    function hide11(Nr)
    {
    for (i=0;i<12;i++){
    if (i!=Nr){
    if (document.getElementById)
    {
    document.getElementById(monate[i]).style.visibility="hidden";
    }
    if (document.layers)
    {
    document.layers[monate[i]].visibility="hidden";
    }
    if (document.all && !document.getElementById)
    {
    document.all[monate[i]].style.visibility="hidden";
    }
    }
    }
    }

    Tschau Holger