Skip to content

Timers & Intervalles

setTimeout()

setTimeout(function, delai) permet de définir un « minuteur » (timer) qui exécute une fonction ou un code donné après la fin du délai indiqué en millisecondes.

javascript
function bonjour() {
  alert('Bonjour !');
}

// Créer un timer et stoque son ID dans timerBonjour
// Le timer attendra 5000 millisecondes avant d'appeler la fonction bonjour()
let timerBonjour = window.setTimeout(bonjour, 5000);

// Annule le timer correspondant à l'ID passé en paramètre
window.clearTimeout(timerBonjour);

Exemple

html
<button onclick="startBonjour();">
  Affiche une alerte après 3 secondes...
</button>
<button onclick="stopBonjour();">
  Annuler l'affichage
</button>

<script>
let timerBonjour;

function bonjour() {
  alert("Bonjour !");
}

// Crée un timer qui appelle bonjour() après 3 secondes
// Stoque l'ID du timer dans la variable timerBonjour
function startBonjour() {
  timerBonjour = window.setTimeout(bonjour, 3000);
}

// Annule le timer timerBonjour
function stopBonjour() {
  window.clearTimeout(timerBonjour);
}
</script>

setInterval()

setInterval(function, delai) appelle une fonction de manière répétée, avec un certain délai fixé entre chaque appel.

javascript
function bonjour() {
  alert('Bonjour !');
}

// Créer un intervalle et stoque son ID dans intervalleBonjour
// L'intervalle appellera bonjour() toutes les 5000 millisecondes
let intervalleBonjour = window.setInterval(bonjour, 5000);

// Annule l'intervalle correspondant à l'ID passé en paramètre
window.clearInterval(intervalleBonjour);

Exemples

Chronomètre

html
<strong>Compteur de secondes :</strong>
<span id="chrono">...</span>

<script>
    // Span qui affiche les secondes
    const spanChrono = document.getElementById('chrono');
    // Valeur de départ
    let start = 0;
    // Fonction qui incrémente start de 1 et 
    // affiche la nouvelle valeur dans le span #chrono
    function incrementeChrono() {
        start = start + 1;
        spanChrono.innerHTML = start;
    }
    // Crée un intervalle qui appelle incrementeChrono toute les 1000 millisecondes
    setInterval(incrementeChrono, 1000);

</script>

Flashing Text

html
<div>
    <p>pin-pon, pin-pon, pin-pon ...</p>
</div>

<button onclick="changeCouleur();">Start</button>

<button onclick="stopChangeCouleur();">Stop</button>

<script>
    let intervalleCouleur;

    // Crée un intervalle qui appelle flashText toute les 500 millisecondes
    function changeCouleur() {
        intervalleCouleur = setInterval(flashText, 500);
    }

    function flashText() {
        // Récupère 1er paragraphe du document
        let para = document.querySelector("p");

        // Change la couleur du texte en rouge ou en bleu
        if (para.style.color === "red") {
            para.style.color = "blue";
        } else {
            para.style.color = "red";
        }
    }

    // Annule l'intervalle
    function stopChangeCouleur() {
        clearInterval(intervalleCouleur);
    }
</script>