Compte à rebours en JavaScript
- Exemple de code de compte à rebours en JavaScript
- Explication du code du compte à rebours en JavaScript
Cet article vous donnera un moyen simple de créer un compte à rebours en JavaScript.
Voici le code pour une minuterie pendant une minute et demie.
<h1 class="text-center" id="count-down-timer"></h1>
function paddedFormat(num) {
return num < 10 ? '0' + num : num;
}
function startCountDown(duration, element) {
let secondsRemaining = duration;
let min = 0;
let sec = 0;
let countInterval = setInterval(function() {
min = parseInt(secondsRemaining / 60);
sec = parseInt(secondsRemaining % 60);
element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`;
secondsRemaining = secondsRemaining - 1;
if (secondsRemaining < 0) {
clearInterval(countInterval)
};
}, 1000);
}
window.onload = function() {
let time_minutes = 1; // Value in minutes
let time_seconds = 30; // Value in seconds
let duration = time_minutes * 60 + time_seconds;
element = document.querySelector('#count-down-timer');
element.textContent =
`${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`;
startCountDown(--duration, element);
};
Exemple de code de compte à rebours en JavaScript
-
Définit la balise HTML du minuteur
Dans le code ci-dessus, la balise
<h1>
contient l’affichage de la minuterie. Utilisez ce code dans le code HTML de votre page Web. Leid="count-down-timer"
est requis car on accède à l’élément en JavaScript avec l’idcount-down-timer
pour changer le texte de l’élément dynamiquement au moment de l’exécution.<h1 class="text-center" id="count-down-timer"></h1>
-
Régler la valeur de la minuterie
Une fois la balise en place, l’étape suivante consiste à définir la valeur du temps de comptage. Habituellement, les pages Web utilisent une heure codée en dur intégrée à leur code, qui n’est pas personnalisable. Vous pouvez régler le timer dans la méthode
window.onload
entime_minutes
ettime_seconds
. Par exemple, si vous souhaitez régler une minuterie sur une minute et demie, définissez le code comme suit:let time_minutes = 1; // Value in minutes let time_seconds = 30; // Value in seconds
Si vous souhaitez régler sur 3 minutes, réglez alors
time_minutes = 3
et laissez letime_seconds = 0
. Maintenant, une fois que vous exécutez votre code ou rechargez votre HTML, vous pouvez obtenir la sortie mise à jour.
Explication du code du compte à rebours en JavaScript
-
L’exécution démarre avec la fonction
window.onload
. Il prend la valeur de la minuterie que vous avez définie et calcule la durée totale en secondes.let time_minutes = 1; // Value in minutes let time_seconds = 30; // Value in seconds let duration = time_minutes * 60 + time_seconds;
-
document.querySelector('#count-down-timer')
récupère le nœud HTML de l’élément. Ce nœud sera utilisé pour actualiser la valeur du minuteur.element = document.querySelector('#count-down-timer');
-
Une fois l’élément disponible, il s’initialise avec la valeur que nous avons définie. Par exemple, dans le code, il est de 1 minute et 30 secondes. Il est défini dans un format rembourré.
function paddedFormat(num) { return num < 10 ? '0' + num : num; } console.log(paddedFormat(3)); console.log(paddedFormat(12));
Production:
03 12
-
La fonction
paddedFormat(num)
renvoie le nombre complété. Pour les minutes et les secondes, les valeurs à un chiffre sont complétées en leur préfixant0
. Par exemple, 2 minutes et 5 secondes sont remplies comme 02 et 05, respectivement.element.textContent = `${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`;
-
Ensuite, nous invoquons la fonction
startCountDown(--duration, element)
en passantduration
en secondes, et le nœud HTML de l’élément d’affichage. Nous avons affiché la valeur01:30
maintenant. Par conséquent, nous avons besoin que la minuterie démarre à01:29
. C’est la raison pour laquelle nous utilisons l’opérateur unaire de décrémentation de durée--duration
.startCountDown(--duration, element);
-
startCountDown(duration, element)
est le cœur de la minuterie. En cela, nous utilisons la fonctionsetInterval(function(){}, 1000)
de JavaScript pour exécuter le timer après chaque seconde (1000 millisecondes) jusqu’à ce qu’il soit effacé ou tué en utilisantclearInterval(countInterval)
.function startCountDown(duration, element) { let secondsRemaining = duration; let min = 0; let sec = 0; let countInterval = setInterval(function() { min = parseInt(secondsRemaining / 60); sec = parseInt(secondsRemaining % 60); element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`; secondsRemaining = secondsRemaining - 1; if (secondsRemaining < 0) { clearInterval(countInterval) }; }, 1000); }
-
Dans la fonction
setinterval()
, les minutes et secondes d’affichage sont calculées. Les minutes sont calculées en divisant la valeurremainingSeconds
par 60 pour donner la valeur des minutes et en prenant sa partie entière.let secondsRemaining = 89; let min = parseInt(secondsRemaining / 60); let sec = parseInt(secondsRemaining % 60); console.log(secondsRemaining + 'seconds'); console.log(min); console.log(sec);
Production:
89 // Equivalent to 1 min and 29 seconds 1 29
-
Ensuite, nous affichons les minutes et secondes calculées sur la page web en paramétrant le texte à l’aide de l’attribut
textContent
de l’élément nœud HTML.element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`;
-
Ensuite, la valeur diminue pour les
secondsRemaining
, et la fonction timer s’exécute chaque seconde avec la méthodesetInterval()
. -
Enfin, une fois que la valeur
secondsRemaining
est à 0, leclearInterval(countInterval)
est déclenché pour arrêter le chronomètre. Cela garantit également que la minuterie n’est pas redémarrée ou passe à des valeurs négatives.