HOWTO · JavaScript
Temporizador de contagem regressiva em JavaScript
Este tutorial explica como criar um cronômetro de contagem regressiva em javascript.
Nesta página
Este artigo fornecerá uma maneira fácil de criar um cronômetro de contagem regressiva em JavaScript.
A seguir está o código para um cronômetro para um minuto e meio.
<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);
};
Exemplo de código de cronômetro de contagem regressiva em JavaScript
-
Defina a tag HTML para o cronômetro
No código acima, a tag
<h1>mantém a exibição do cronômetro. Use este código no HTML da sua página da web. Oid="count-down-timer"é necessário porque o elemento é acessado em JavaScript com o idcount-down-timerpara alterar o texto do elemento dinamicamente em tempo de execução.<h1 class="text-center" id="count-down-timer"></h1> -
Defina o valor do temporizador
Depois que a tag estiver no lugar, a próxima etapa é definir o valor do tempo de contagem. Normalmente, as páginas da web usam um tempo codificado embutido em seu código, que não é personalizável. Você pode definir o cronômetro no método
window.onloademtime_minutesetime_seconds. Por exemplo, se você deseja definir um cronômetro para um minuto e meio, defina o código da seguinte maneira:let time_minutes = 1; // Value in minutes let time_seconds = 30; // Value in secondsSe você deseja definir para 3 minutos, defina
time_minutes = 3e deixe otime_seconds = 0. Agora, depois de executar o código ou recarregar o HTML, você pode obter a saída atualizada.
Explicação do código do cronômetro de contagem regressiva em JavaScript
-
A execução começa com a função
window.onload. Leva o valor do cronômetro definido por você e calcula a duração total do tempo em segundos.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')obtém o nó HTML do elemento. Este nó será usado para atualizar o valor do cronômetro.element = document.querySelector('#count-down-timer'); -
Uma vez que o elemento está disponível, ele inicializa com o valor definido por nós. Por exemplo, no código, é 1 minuto e 30 segundos. Ele é definido em um formato acolchoado.
function paddedFormat(num) { return num < 10 ? '0' + num : num; } console.log(paddedFormat(3)); console.log(paddedFormat(12));Resultado:
03 12 -
A função
paddedFormat(num)retorna o número preenchido. Para minutos e segundos, os valores de um dígito são preenchidos com um prefixo0para eles. Por exemplo, 2 minutos e 5 segundos são preenchidos como 02 e 05, respectivamente.element.textContent = `${paddedFormat(time_minutes)}:${paddedFormat(time_seconds)}`; -
Em seguida, invocamos a função
startCountDown(--duration, element)passandodurationem segundos e o nó HTML do elemento de exibição. Exibimos o valor01:30agora. Portanto, precisamos que o cronômetro comece a partir de01:29. Esta é a razão pela qual usamos o operador unário de decremento com duração--duration.startCountDown(--duration, element); -
startCountDown(duration, element)é o coração do cronômetro. Nesse caso, usamos a funçãosetInterval(function(){}, 1000)do JavaScript para executar o cronômetro após cada segundo (1000 milissegundos) até que seja apagado ou eliminado usandoclearInterval(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); } -
Dentro da função
setinterval(), os minutos e segundos para exibição são calculados. Os minutos são calculados dividindo o valor deremainingSecondspor 60 para obter o valor do minuto e tomando a sua parte inteira.let secondsRemaining = 89; let min = parseInt(secondsRemaining / 60); let sec = parseInt(secondsRemaining % 60); console.log(secondsRemaining + 'seconds'); console.log(min); console.log(sec);Resultado:
89 // Equivalent to 1 min and 29 seconds 1 29 -
Em seguida, exibimos os minutos e segundos calculados para a página da web, definindo o texto usando o atributo
textContentdo elemento de nó HTML.element.textContent = `${paddedFormat(min)}:${paddedFormat(sec)}`; -
Em seguida, o valor é reduzido para
segundosRemaininge a funcionalidade do temporizador é executada a cada segundo com o métodosetInterval(). -
Finalmente, uma vez que o valor
secondsRemainingé 0, oclearInterval(countInterval)é acionado para parar o cronômetro. Também garante que o cronômetro não seja reiniciado ou entre em valores negativos.