webbydoc: Hilite color bei Mouseover nach Jahreszeit ändern

Hallo zusammen,
ich hab ein Problem:
Mit CSS klappt es bereits, die Farben werden den Jahreszeiten entsprechend angepasst. Mit den Mouseovereffekten klappt es leider nicht. Könnt ihr mir weiterhelfen? So sieht mein Script aus:
<script type="text/JavaScript"  >
var FruehlAnfang = 0; // 0 = Maerz
var FruehlEnde = 2;   // 2 = Mai
var SommerAnfang = 3; // 3 = Juni
var SommerEnde = 5;   // 5 = August
var HerbstAnfang = 6;  // 6 = September
var HerbstEnde = 8;   // 8 = November
var WinterAnfang = 9; // 9 = Dezember
var WinterEnde = 11;    // 11 = Februar

var jetzt = new Date();
var Monat = jetzt.getMonth();

if (Monat >= FruehlAnfang && Monat <= FruehlEnde )
}
document.write ('<LANGUAGE="JavaScript" type="text/JavaScript" src="../css/fruehling/zellen.js">');
}
else if (Monat >= SommerAnfang && Monat <= SommerEnde )
{
document.write ('<LANGUAGE="JavaScript" type="text/JavaScript" src="../css/sommer/zellen.js">');
}
else if (Monat >= HerbstAnfang && Monat <= HerbstEnde )
{
document.write ('<LANGUAGE="JavaScript" type="text/JavaScript" src="../css/herbst/zellen.js">');
}
else if (Monat >= WinterAnfang && Monat <= WinterEnde )
{
document.write ('<LANGUAGE="JavaScript" type="text/JavaScript" src="../css/winter/zellen.js">');
}

</script>
Hinter der js Datei verbirgt sich folgendes:

<!-- Script fuer Mouseover der Zellen -->
ns = false;
ie = false;
if(document.layers)
{
    ns=true;
}

if(document.all)
{
    ie=true;
}

function hilite(lnk)
{
    if(ie)
    {
        document.all[lnk].style.background='#9dff9d';
    }
}

function nolite(lnk)
{
    if(ie)
    {
        document.all[lnk].style.background='#17e822';
    }
}
 Einzigste was sich dann natürlich bei den Jahreszeiten ändern soll sind die Farben beim Mouseovereffekt.

Ich danke euch schon mal für euere Hilfe

  1. hi,

    schmeiße bitte den ganzen hochgradig veralteten - nein, vorsintflutlichen - Murks weg, nutze CSS für die :hover-Effekte auf deinen Links - und definiere dir für die Jahreszeiten ganz einfach verschiedene Klassen. (Ob du die dann per JS jedem Link verpasst, oder nur einmal einem Container oder meinetwegen auch body, sei dir überlassen.)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hello out there!

    var FruehlAnfang = 0; // 0 = Maerz

    Wie kommst du darauf, dass die Zählung der Monate bei März beginnt? (Das war mal so, ist aber schon etliche Jahrhunderte her.)

    0 entspricht in JavaScript dem Januar. (Wer sich diesen Schwachsinn ausgedacht hat, gehört auf dem Marktplatz ausgepeitscht. Oder auch nicht, sowas ist ja auch schon etliche Jahrhunderte her.)

    var FruehlEnde = 2;   // 2 = Mai
    var SommerAnfang = 3; // 3 = Juni
    var SommerEnde = 5;   // 5 = August
    var HerbstAnfang = 6;  // 6 = September
    var HerbstEnde = 8;   // 8 = November
    var WinterAnfang = 9; // 9 = Dezember
    var WinterEnde = 11;    // 11 = Februar

    Warum so umständlich? Statt

    if (Monat >= FruehlAnfang && Monat <= FruehlEnde )

    kannst du auch abfragen
    if (Monat >= FruehlAnfang && Monat < SommerAnfang)

    Du brauchst also die Hälfte dieser Konstanten gar nicht.

    Eigentlich brauchst du sie alle nicht: Du addierst zum Monat 1 dazu, teilst durch 3 und nimmst davon den <http://de.selfhtml.org/javascript/objekte/math.htm#floor@title=ganzzahligen Anteil>:

    Monat     m   m+1   (m+1)/3   floor((m+1)/3)   Jahreszeit
    Januar    0    1     0.333          0          Winter
    Februar   1    2     0.667          0          Winter
    März      2    3     1              1          Frühling
    April     3    4     1.333          1          Frühling
    Mai       4    5     1.667          1          Frühling
    Juni      5    6     2              2          Sommer
    ⋮         ⋮    ⋮     ⋮              ⋮          ⋮
    November 10   11     3.667          3          Herbst
    Dezember 11   12     4              4          Winter

    Wie du siehst, gibt dir das die Jahreszeit.

    Und für die Fallunterscheidung ist hier http://de.selfhtml.org/javascript/sprache/bedingt.htm#switch@title=switch eleganter als mehrere if:

    var jetzt = new Date();  
    switch(Math.floor((jetzt.getMonth()+1)/3) {  
      case 1:  /* Frühling */; break;  
      case 2:  /* Sommer   */; break;  
      case 3:  /* Herbst   */; break;  
      default: /* Winter   */;  
    }
    

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Hello out there!

      Eigentlich brauchst du sie alle nicht: Du addierst zum Monat 1 dazu, teilst durch 3 und nimmst davon den <http://de.selfhtml.org/javascript/objekte/math.htm#floor@title=ganzzahligen Anteil>:

      Die Addition brauchst du eigentlich auch nicht: Du teilst durch 3 und http://de.selfhtml.org/javascript/objekte/math.htm#round@title=rundest. Das Ergebnis ist dasselbe.

      See ya up the road,
      Gunnar

      --
      “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)