trueTom: Lässt sich das einfacher machen?

Hi,
nocheinmal zu meinem Script, welches den Status ob ein Laden offen ist oder nicht ausgibt.

Gibt es eine Möglichkeit dieses dynamischer mit Javascript zu schreiben?

So das, wenn sich die Ladenöffnungszeiten ändern nicht alles neu schreiben muss :(.

<!--Ladenöffnung Dortmund zwischen   Montag - Freitag
      7:00 - 9:15 Uhr
      11:15 - 13:30 Uhr
            14:30 - 15:00 Uhr// -->
<html>

<head>
<title>Status Laden DO</title>
</head>

<body>
<script language="JavaScript"><!--
window.setTimeout('Status()',0);

function Status()
{var Jetzt = new Date();
var Stunden = Jetzt.getHours();
var Minuten = Jetzt.getMinutes();
var WoTag = Jetzt.getDay();

if (WoTag == 0 || WoTag == 6)     // Samstag und Sonntag ausgeschlossen

{ meldung_zu();
}

else
{ if (Stunden >= 7 && Stunden < 9 )   // Bereich 7:00 - 8:59 offen

{ meldung_offen();
}

else if (Stunden >= 9 && Stunden < 10)   // Bereich ab 9:15 zu

{ if (Minuten >=15)
 { meldung_zu();
 }
 else
{ meldung_offen();
}
 }

else if (Stunden >= 11 && Stunden < 12)   // ab 11:15 bis 11:59 offen

{ if (Minuten >=15)
 { meldung_offen();
 }
 else
{ meldung_zu();
}

}

else if (Stunden >= 12 && Stunden < 13)   // zwischen 12:00 - 12:59 offen

{ meldung_offen();
 }

else if (Stunden >= 13 && Stunden < 14)   // bis 13:30 offen, danach zu

{  if (Minuten < 30)
 { meldung_offen ();
 }
 else
{ meldung_zu ();
}

}

else if (Stunden >= 14 && Stunden < 15)   // 14:30 bis 15:00 offen

{  if (Minuten < 30)
 { meldung_zu ();
 }
 else
{ meldung_offen ();
}
}

else         // bei allen übrigen Zeiten zu
 { meldung_zu ();
}

}
} //klammer von Funktion

function meldung_offen()
{
document.laden.status.value='geöffnet';
window.setTimeout('Status()',1000);
}

function meldung_zu()
{
document.laden.status.value ='geschlossen';
window.setTimeout('Status()',1000);
}

// --></script>

<form name="laden">
  <p><input size="12" name="status" style="border: medium none; margin: 0px"> </p>
</form>

<p> </p>
</body>
</html>

  1. </faq/#Q-11>

    1. </faq/#Q-11>

      aha danke auch !?

      Das ist doch eine ganz neue Frage!!!

      1. Hallo,

        </faq/#Q-11>

        aha danke auch !?
        Das ist doch eine ganz neue Frage!!!

        wenn man sich <?m=81080&t=14603> ff. so durchliest, kann man da auch
        anderer Meinung sein ;-)

        <?m=81080&t=14603> enthält das fast identische Script, <?m=81142&t=14603>
        ist die eben gestelle Frage.

        Es ist nicht notwendig und auch nicht erwünscht, die gleiche Frage
        innerhalb weniger Stunden (hier: 65 Minuten) in einem neuen Thread
        zu stellen.

        Viele Grüße,
        Stefan

  2. Hallo,

    else if (Stunden >= 9 && Stunden < 10)   // Bereich ab 9:15 zu

    { if (Minuten >=15)
    { meldung_zu();
    }
    else
    { meldung_offen();
    }
    }

    Das mit der verschachtelten Abfrage finde ich umständlich. Versuch's mal so:

    function Status()
    {
      var Jetzt = new Date();
      var tagMinuten = Jetzt.getHours()*60 + Jetzt.getMinutes();
      var WoTag = Jetzt.getDay();
      if (
        WoTag != 0 && WoTag != 6 && (
          (tagMinuten >=  7*60+00 && tagMinuten <  9*60+15) ||
          (tagMinuten >= 11*60+15 && tagMinuten < 13*60+30) ||
          (tagMinuten >= 14*60+30 && tagMinuten < 15*60+00)
        )
      ) meldung_offen();
      else meldung_zu();
    }

    Zwei Dinge fallen mir noch ein:

    • Ich würde nicht jede Sekunde wieder abfragen: Das belastet IMHO den
        Browser zu stark.
    • Mir ist noch nicht ganz klar, wozu das ganze gut sein soll: Wenn
        sich jemand die Seite im Internet anschaut, wird er doch
        höchstwahrscheinlich zu Hause sein. Da ist es ihm in den meisten
        Fällen wohl eher egal, ob der Laden jetzt im Moment gerade offen
        hat. Und wann bzw. wie lange er noch offen hat, kann er sicht ja
        selbst ausrechnen. Es wäre sicher eine ganz nette Hilfe, den
        aktuellen Ladenzustand anzuzeigen, aber es ist sehr fehlerträchtig,
        da auf die Uhr des Benutzers zurückgegriffen wird. Das kann zu
        unangenehmen Missverständnissen führen, wenn auf einmal ein
        Besucher mit falsch eingestellter Computeruhr vor der Tür wartet
        und darauf besteht, jetzt hineingelassen zu werden ;-)

    Robert

    1. wow vielen Dank!

      :)

      das das so einfach geht :)!!

      Die Statusanzeige soll im Intranet angezeigt werden und bei dem Laden handelt es sich um einen in der Firma.

      Die Uhrzeit wird bei jedem Start vom Server neu gesetzt ;), daher hat sie so jeder richtig :).

      echt nochmal Vielen Dank!
      MFG
      trueTom

      1. eine kleine Frage nicht direkt zu dem Script, aber zu dessen einsatzt.

        leider lässt sich ein Textfeld, nur im IE ohne Rand ,anzeigen. Nicht in Netscape :(

        Ich will aber den Status in einen Text einbinden. Gibt es für Netscape eine andere Möglichkeit als Layer ?
        Diese kann man so schlecht richtig in einen Text positionieren. :(

        Vielen Dank

        trueTom

  3. Hi,

    So das, wenn sich die Ladenöffnungszeiten ändern nicht alles neu schreiben muss :(.

    Klar doch:

    zeiten = new Array ("7:00" , "9:15", "11:00" , "13:15", "16:00" , "19:15");

    function pruefeZeit()
             {
             var rval = "closed";

    currDate = new Date();
             currHour = currDate.getHours();
             currMin = currDate.getMinutes();

    for (i=0;i<zeiten.length;i+=2)
                {
                var zeit = zeiten[i].split(":");
                shour = parseInt(zeit[0]);
                smin = parseInt(zeit[1]);
                var zeit = zeiten[i+1].split(":");
                ehour = parseInt(zeit[0]);
                emin = parseInt(zeit[1]);

    sTime = shour*100+smin;
                eTime = ehour*100+emin;
                cTime = currHour*100+currMin;
                if ((cTime >= sTime) && (cTime < eTime) && (rval == "closed"))
                   rval = "open";
                else if (rval == "closed")
                   rval = "closed";
                }
             if (rval == "open")
                alert ("offen");
             else
                alert ("zu");
             }

    Im Array Zeiten kannst du nun, immer ein Zeitenpaar angeben oder ändern.

    Array (Öffnungszeit,Schließzeit,Öffnungszeit,...)

    Gruß

    ueps

    1. Danke für die Möglichkeit.
      Da muss ich mich erst einmal *reinlesenverstehen* *g*.

      1. Danke für die Möglichkeit.
        Da muss ich mich erst einmal *reinlesenverstehen* *g*.

        Bitte, viel Glück

        ueps