[latex]Mae govannen![/latex]
var Wochentag = new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
if (h >= 19 && h <= 7.5 && Wochentag = Montag || Dienstag || Mittwoch || Donnerstag || Freitag)
Heißt: Wenn h >= 19 ist UND h kleiner oder gleich 7.5 UND der Variablen wird der Wert der Variablen Montag zugewiesen (also undefined) oder der Wert der Variablen Dienatag ist nicht falsy (also undefined, "", 0, null, false) oder der Wert der Variable Mittwoch ist nicht falsy oder der Wert der Variable Donnerstag ist nicht falsy oder der Wert der Variable Freitag ist nicht falsy
Zum einen wird getHours() garantiert nichts anderes als Ganzzahlen liefern, womit der Vergleich h <= 7.5
schon unsinnig ist bzw. auch um 07:59 noch gilt. Ansonsten willst du garantiert nicht die Variablen Montag, Dienstag etc. verwenden, sondern Zeichenketten.
Wochentag = Montag
ist in mehrfacher Hinsicht völlig falsch:
Du vergleichst nicht, sondern weist der Variablen Wochentag den Wert der bisher noch nicht belegten Variablen Montag zu. Also undefined
Du erhältst also bei alert(Wochentag) das Ergebnis undefined.
Schlimmer noch: Das Array mit den Wochentag-Namen ist in diesem Moment überschrieben.
Aber auch der Vergleich Wochentag == Montag
oder auch die von dir eigentlich gedachte Form Wochentag == "Montag"
würde nicht funktionieren, da Wochentag ein Array ist. Du würdest also vergleichen, ob ein Array gleich einer Zeichenkette ist, was garantiert nicht das ist, was du willst.
Überhaupt ist das ganze Geraffel mit den Namen in diesem Vergleich überflüssig. Weshalb testest du nicht auf den Wochentag-Indes (TagInWoche)?
if ( ..... && (TagInWoche == 1 || TagInWoche == 2)) {
(beachte die zusätzlichen Klammern)
Für den Rest des Codes und genauere Analyse hab ich leider gerade keine Zeit mehr.
Stur lächeln und winken, Männer!
Kai