Hi I want my timer to continue from the current time each second. Keeping the same time format. I just added a simple code to check.
Code
<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>
Advertisement
Answer
Here is the working solution.
You had to split your string that represents time, so you can count the amount of seconds that you actually had.
Note: I’ve used this as help for transitioning from HH:MM:SS to numbers.
And, in the end, you just need to get the timer() string, there is no need to write both time and the return element of timer function.
<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>