Gunnar Bittersmann: Hilite color bei Mouseover nach Jahreszeit ändern

Beitrag lesen

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)