Функции таймера не сработают, пока текущая функция не будет завершена. Вот почему ваш for
l oop завершается до запуска функции таймера. Чтобы увидеть, как отсчитывается таймер, вам вообще не следует использовать al oop, потому что таймер создаст функцию цикла. Вам нужен только рекурсивный setInterval()
или setTimeout()
.
const element = document.getElementById("countdown");
let startingNum = parseInt(Math.random() * 50, 10);
let timer = null;
function counter(){
// Clear any running timer to prevent multiple
// timers from stacking up in the event queue
clearTimeout(timer);
startingNum--; // Decrease the counter
// If the count is greater than 0
if(startingNum >-1){
element.textContent = startingNum;
// Set a new timer up to call this function
timer = setTimeout(counter, 1000);
}
}
// Start the process off
timer = setTimeout(counter, 1000);
<div id="countdown"></div>