Week 6

Timers

setInterval (iets herhalen)#

Wat is setInterval?
Met setInterval kun je een functie steeds opnieuw uitvoeren, bijvoorbeeld elke seconde.

Basis voorbeeld:

function zegHallo() {

                      console.log("Hallo!");

                    }


                    // Voer zegHallo uit elke 1000 milliseconden (= 1 seconde)

                    setInterval(zegHallo, 1000);
Tijd in milliseconden:
  • 1000 = 1 seconde
  • 2000 = 2 seconden
  • 500 = 0.5 seconde

Opbouw setInterval:

setInterval(functieNaam, tijdInMilliseconden);
  • functieNaam → welke functie moet worden uitgevoerd
  • tijdInMilliseconden → hoe lang wachten tussen elke uitvoering

clearInterval (stoppen met herhalen)#

Wat is clearInterval?
Met clearInterval kun je een timer stoppen die je met setInterval hebt gestart.

Voorbeeld met start en stop:

HTML:
<p id="teller">0</p>

                            <button id="startKnop">Start</button>

                            <button id="stopKnop">Stop</button>
JavaScript:
let count = 0;

                            let timer; // Hier slaan we de timer
                                op


                            function telOp() {

                              count++;

                              let teller = document.getElementById("teller");

                              teller.innerHTML = count;

                            }


                            function start() {

                              timer = setInterval(telOp, 1000);

                            }


                            function stop() {

                              clearInterval(timer);

                            }


                            document.getElementById("startKnop").addEventListener("click", start);

                            document.getElementById("stopKnop").addEventListener("click", stop);
Belangrijk:
  • Sla de timer op in een variabele (bijv. timer)
  • Gebruik die variabele om de timer te stoppen met clearInterval(timer)

Tijd formatteren (mm:ss)#

Voor een timer wil je vaak tijd tonen als minuten:seconden, bijvoorbeeld "05:30".

Seconden omzetten naar minuten en seconden:

let totaalSeconden = 125;


                    // Bereken minuten (afgerond naar beneden)

                    let minuten = Math.floor(totaalSeconden /
                    60);


                    // Bereken resterende seconden

                    let seconden = totaalSeconden % 60;


                    console.log(minuten); // 2

                    console.log(seconden); // 5
% operator (modulo): geeft de rest na deling.
125 % 60 = 5 (want 125 / 60 = 2 met rest 5)

Nul toevoegen voor mooie weergave:

function formatTijd(totaalSeconden) {

                      let minuten = Math.floor(totaalSeconden
                    / 60);

                      let seconden = totaalSeconden % 60;

                      

                      // Voeg een 0 toe als het getal kleiner is dan 10

                      if (minuten < 10) {

                            minuten = "0" + minuten;

                          }

                          if (seconden < 10) {

                                seconden = "0" + seconden;

                              }

                              

                              return minuten + ":" +
                            seconden;

                            }


                            console.log(formatTijd(125)); // "02:05"

                            console.log(formatTijd(65)); // "01:05"

                            console.log(formatTijd(5)); // "00:05"

Countdown timer#

Een countdown telt af van een bepaalde tijd naar 0.

Simpele countdown van 10 naar 0:

HTML:
<p id="countdown">10</p>

                            <button id="startKnop">Start</button>
JavaScript:
let tijd = 10;

                            let timer;


                            function telAf() {

                              tijd--;

                              let countdown = document.getElementById("countdown");

                              countdown.innerHTML = tijd;

                              

                              if (tijd === 0) {

                                clearInterval(timer);

                                alert("Tijd is
                                om!");

                              }

                            }


                            function start() {

                              timer = setInterval(telAf, 1000);

                            }


                            document.getElementById("startKnop").addEventListener("click", start);
Wat gebeurt er?
  1. Elke seconde wordt tijd-- uitgevoerd (aftellen)
  2. De nieuwe tijd wordt getoond
  3. Als tijd 0 is, stop de timer en toon een melding

Pomodoro timer basis#

Een Pomodoro timer is een werktimer die aftelt. Meestal 25 minuten, maar voor deze opdracht beginnen we met 10 seconden om te testen.

Basis Pomodoro (10 seconden):

HTML:
<h1>Pomodoro Timer</h1>

                            <p id="timer">00:10</p>

                            <button id="startKnop">Start</button>

                            <button id="pauseKnop">Pause</button>

                            <button id="resetKnop">Reset</button>
JavaScript:
let tijd = 10; // 10
                                seconden

                            let timer;


                            function formatTijd(seconden)
                            {

                              let min = Math.floor(seconden
                            /
                            60);

                              let sec = seconden % 60;

                              if (min < 10) min =
                                "0" + min;

                                  if (sec < 10) sec =
                                    "0" + sec;

                                      return min + ":" + sec;

                                    }


                                    function update() {

                                      let display = document.getElementById("timer");

                                      display.innerHTML = formatTijd(tijd);

                                    }


                                    function telAf() {

                                      tijd--;

                                      update();

                                      

                                      if (tijd === 0)
                                    {

                                        clearInterval(timer);

                                        alert("Klaar!");

                                      }

                                    }


                                    function start() {

                                      timer = setInterval(telAf, 1000);

                                    }


                                    function pause() {

                                      clearInterval(timer);

                                    }


                                    function reset() {

                                      clearInterval(timer);

                                      tijd = 10;

                                      update();

                                    }


                                    // Event listeners

                                    document.getElementById("startKnop").addEventListener("click",
                                    start);

                                    document.getElementById("pauseKnop").addEventListener("click",
                                    pause);

                                    document.getElementById("resetKnop").addEventListener("click",
                                    reset);

Uitbreiden naar 25:00 timer#

Als je timer werkt met 10 seconden, kun je hem makkelijk uitbreiden naar 25 minuten.
// Verander alleen deze regel:

                    let tijd = 1500; //
                        25 minuten
                        = 25 * 60 = 1500 seconden


                    // En in de reset functie:

                    function reset() {

                      clearInterval(timer);

                      tijd = 1500; // 25 minuten

                      update();

                    }
Omrekenen van minuten naar seconden:
Vermenigvuldig met 60. Bijvoorbeeld: 25 minuten × 60 = 1500 seconden

Veelgemaakte fouten#

  • setInterval(functie(), 1000)setInterval(functie, 1000) (geen haakjes bij functienaam!)
  • Vergeten de timer op te slaan in een variabele → kun je hem niet stoppen
  • Timer niet stoppen als tijd 0 is → blijft doorlopen naar negatieve getallen
  • Tijd in seconden in plaats van milliseconden → gebruik 1000 voor 1 seconde
  • Vergeten update() aan te roepen bij reset → timer toont oude waarde

Stappenplan Pomodoro Timer#

  1. Maak een variabele tijd = 10 (voor testen)
  2. Maak een formatTijd() functie die seconden omzet naar "mm:ss"
  3. Maak een update() functie die de tijd op het scherm zet
  4. Maak een telAf() functie die:
    • tijd-- doet
    • update() aanroept
    • Checkt of tijd === 0 en dan de timer stopt
  5. Maak een start() functie met setInterval(telAf, 1000)
  6. Maak een pause() functie met clearInterval(timer)
  7. Maak een reset() functie die tijd terugzet naar 10 en update() aanroept
  8. Koppel alle knoppen aan de juiste functies met addEventListener
  9. Extra: Verander 10 naar 1500 voor een echte 25-minuten timer