Hice un cronómetro para un proyecto en la escuela (todavía estoy en la escuela, sí, y no tengo JavaScript como lección que recibimos este semestre) en JavaScript y continúa después del 0. Recibí ayuda de un maestro pero puedo No le alcance con la pandemia y esas cosas.
Este es el código que escribí y lo que pasa es que cuando llega a la fecha que puse entra en -0 -0 -0 -01 y continúa desde allí.
const countdown = () => { let countDate = new Date('Febuary 9, 2022 00:00:00').getTime(); let now = new Date().getTime(); let gap = countDate - now; let second = 1000; let minute = second * 60; let hour = minute * 60; let day = hour * 24; let textDay = Math.floor(gap / day); let textHour = Math.floor((gap % day) / hour); let textMinute = Math.floor((gap % hour) / minute); let textSecond = Math.floor((gap % minute) / second); document.querySelector('.day').innerText = textDay; document.querySelector('.hour').innerText = textHour; document.querySelector('.minute').innerText = textMinute; document.querySelector('.second').innerText = textSecond; }; setInterval(countdown, 1000);setInterval devuelve un valor que puede pasar a clearInterval para detener la ejecución del intervalo. Almacene ese valor en una variable, por ejemplo:
let countInterval = 0; const countdown = () => { //... }; countInterval = setInterval(countdown, 1000); Luego, dentro de la countdown , puede verificar si desea borrar ese intervalo. Por ejemplo, si desea borrarlo cuando la gap <= 0 , debe realizar esa lógica:
if (gap <= 0) { clearInterval(countInterval); return; }Esto detendría la ejecución del intervalo cuando finalmente se cumpla esa condición.
Ejemplo:
let countInterval = 0; const countdown = () => { let countDate = new Date('January 11, 2022 13:35:00').getTime(); let now = new Date().getTime(); let gap = countDate - now; if (gap <= 0) { clearInterval(countInterval); return; } let second = 1000; let minute = second * 60; let hour = minute * 60; let day = hour * 24; let textDay = Math.floor(gap / day); let textHour = Math.floor((gap % day) / hour); let textMinute = Math.floor((gap % hour) / minute); let textSecond = Math.floor((gap % minute) / second); document.querySelector('.day').innerText = textDay; document.querySelector('.hour').innerText = textHour; document.querySelector('.minute').innerText = textMinute; document.querySelector('.second').innerText = textSecond; }; countInterval = setInterval(countdown, 1000); <div class="day"></div> <div class="hour"></div> <div class="minute"></div> <div class="second"></div>