Modifier le gestionnaire pour que le compteur décroisse, et qu'il…
Exercice de TD · niveau 2 · NSI (première), chapitre 10 — Interagir sur le Web · Événements et état de la page
Énoncé
Modifier le gestionnaire pour que le compteur décroisse, et qu'il refuse de descendre sous zéro.
Corrigé
const bouton = document.getElementById("compter");
const affichage = document.getElementById("total");
let compteur = 0;
bouton.addEventListener("click", function () {
if (compteur > 0) {
compteur = compteur - 1;
affichage.textContent = compteur;
}
});
Le test est placé avant la décrémentation : on refuse le coup, on ne le répare pas après coup. Écrire l'inverse — décrémenter, puis if (compteur < 0) { compteur = 0; } — donne le même affichage, mais laisse la variable passer par ; si un autre morceau de code lit compteur entre-temps, il lit une valeur interdite.
Une variante plus honnête envers l'utilisateur : au lieu de ne rien faire, désactiver le bouton quand il n'y a plus rien à retirer.
bouton.addEventListener("click", function () {
compteur = compteur - 1;
affichage.textContent = compteur;
bouton.disabled = (compteur === 0);
});
Il faut alors penser à bouton.disabled = true; au chargement, puisque le compteur démarre à zéro.
Contrôle : avec la première version, cinq clics sur un compteur à affichent , , , , . Aucun clic n'échoue, aucun ne descend sous zéro.
Piège : croire que bouton.disabled = true protège quoi que ce soit. C'est un confort d'interface : un bouton grisé se réactive en trois secondes dans les outils de développement. Le test dans le gestionnaire, lui, est la vraie garantie — et si le compteur avait un sens côté serveur, il faudrait l'y vérifier aussi.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.