Interval wir nicht richtig ausgeführt

  • Ich habe einen kleinen Intervaltimer geschrieben (HTMl mit Javascript)

    jeweils Work, rest, pause als einzelnen timer diese sollen nun durch ein switch statement nacheinander ausgeführt werden. Ich weiß nicht genau wie ich es beschreiben soll.

    Es wäre sinnvoll das programm selbst zu testen, dann auf work drückn und warten. Es sollte der work timer starten dannach der rest timer dann wieder der work timer .... Aber das passiert nicht. Warum?


    Hier der Code zum testen:

    https://pastebin.com/5r8TyXi4

  • Hey,


    mir wird der Fehler nicht ersichtlich.


    Ich habe es mir mal heruntergeladen und es ausgeführt und die Timer werden nach und nach so wie du es beschreibst ausgeführt.


    Kannst du bitte die Fehlfunktion nochmal detaillierter beschreiben. Danke.


    Grüße,

    Stef

  • Ok, wenn ich das Programm starte und auf work klicke wird der worktimer gestartet nachdem dieser durchgelaufen ist startet der rest timer, so weit so gut im nächsten falle (case2) sollte wieder der work timer loslaufen dies passiert aber bei mir nicht bei mir springt er dann zu case5 in dem er den pause timer startet, ohne ein zweites mal den work timer glaufen lassen zu haben

  • Der Debugger bringt es an den Tag: Der Name work wird doppelt verwendet, einmal für die Funktion und dann für den Timer. Ist die Funktion zum ersten Mal durchgelaufen, ist work keine Funktion mehr sondern hat den Wert, den ihr setInterval zugewiesen hat.

    Code
            function work(argument) {
                counterwork = 45;
                var status = 0;
                clearInterval(work);
                work = setInterval(function () {
                    counterwork--;

    BTW: Den Code könnte man stark straffen, indem man nur eine Funktion countdown verwendet, denn die Funktion ist immer die selbe, nur der Anfangswert und der Container, in den das Ergebnis eingetragen wird, unterscheiden sich. Könnte dann so aussehen:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!