Hola, quiero que mi temporizador continúe desde la hora actual cada segundo. Manteniendo el mismo formato de hora. Acabo de agregar un código simple para verificar.
Código
<div id="output"></div> <script> const output = document.querySelector("#output"); let time = "12:48:39" let seconds = 0; function timer() { seconds++; let hours = Math.floor(seconds / 3600); // Get minutes let minutes = Math.floor((seconds - hours * 3600) / 60); // Get seconds let secs = Math.floor(seconds % 60); if (hours < 10) { hours = `0${hours}`; } if (minutes < 10) { minutes = `0${minutes}`; } if (secs < 10) { secs = `0${secs}`; } return `${hours}:${minutes}:${secs}`; } setInterval(() => { output.innerHTML = parseInt(time + timer()) }, 1000) </script>Aquí está la solución de trabajo.
Tuviste que dividir tu cadena que representa el tiempo, para que puedas contar la cantidad de segundos que realmente tuviste.
Nota: he usado esto como ayuda para la transición de HH:MM:SS a números.
Y, al final, solo necesita obtener la cadena timer() , no es necesario escribir tanto el tiempo como el elemento de retorno de la función del temporizador.
<div id="output"></div> <script> const output = document.querySelector("#output"); let time = "12:48:39" let a = time.split(':'); let seconds = (+a[0]) * 60 * 60 + (+a[1]) * 60 + (+a[2]); ; let ti = ""; function timer() { seconds++; let hours = Math.floor(seconds / 3600); // Get minutes let minutes = Math.floor((seconds - hours * 3600) / 60); // Get seconds let secs = Math.floor(seconds % 60); if (hours < 10) { hours = `0${hours}`; } if (minutes < 10) { minutes = `0${minutes}`; } if (secs < 10) { secs = `0${secs}`; } ti = `${hours}:${minutes}:${secs}`; return ti; } setInterval(() => { output.innerHTML = timer(); }, 1000) </script>No estoy muy seguro de lo que estás preguntando aquí... ¿por qué el código no funciona?
En primer lugar, estoy bastante seguro de que al menos parte del problema es el hecho de que time y la salida de timer() son cadenas que está concatenando y luego intentando analizar como números .
Cuando haces time + timer() es lo mismo que hacer "12:48:39" + timer() y, por ejemplo, si la salida del temporizador es 0:01:12 (segundos = 72), entonces es lo mismo que hacer:
"12:48:39" + "0:01:12" Lo que solo generará "12:48:390:01:12" porque concatenará las dos cadenas.
Cuando pasas eso a parseInt() , esencialmente estás haciendo:
parseInt("12:48:390:01:12") parseInt() no sabrá qué hacer con eso, ya que no es un número simple, por lo que solo analizará el principio y desechará el resto; devolverá 12 , el primer número.
Entonces... si su objetivo es agregar dos veces, le recomiendo usar Date , que le permite almacenar fechas y horas correctamente. Ver: Agregar dos fechas y horas juntas en javascript
Espero que esto ayude :)