I keep getting ‘countdown is not defined’ with this line
var timeout = setTimeout('countdown()',1000);
It should loop the function countdown() every second. How do i solve this?
function countdown() {
var until = $('.time-elapsed').attr('data-time');
var nextmonth = new Date(until);
var now = new Date();
var timeDiff = nextmonth.getTime() - now.getTime();
if(timeDiff <=0) {
var nextmonth = new Date(until);
}
var seconds = Math.floor(timeDiff / 1000);
var minutes = Math.floor(seconds / 60);
var hours = Math.floor(minutes / 60);
var days = Math.floor(hours / 24);
hours%=24;
minutes%=60;
seconds%=60;
$('.time-elapsed').find('ul:eq(0)').find('li:eq(1)').html(days);
$('.time-elapsed').find('ul:eq(1)').find('li:eq(1)').html(hours);
$('.time-elapsed').find('ul:eq(2)').find('li:eq(1)').html(minutes);
$('.time-elapsed').find('ul:eq(3)').find('li:eq(1)').html(seconds);
var timeout = setTimeout('countdown()',1000);
}
Don’t use a string as the first parameter of setTimeout. Use a function intead:
And I suggest you to use
setInterval(countdown,1000)and remove thesetTimeout(countdown,1000)in the bottom of your function.setIntervalwill repeat thecountdownfunction infinitely.To stop it, just use
clearInterval(timeout);