Hilite color bei Mouseover nach Jahreszeit ändern
webbydoc
- javascript
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
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
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
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