2012-05-02 2 views
0

Im делает таймер обратного отсчета, и я хочу, чтобы время обновлялось каждую секунду. Я использую setInterval, но он работает только один раз, а не каждую секунду. Что не так с моим кодом?циклическая функция каждую секунду

var countDown = setInterval(function(){ 
$('#days').val(daysLeft); 
$('#hours').val(hoursLeft); 
$('#minutes').val(minLeft); 
$('#seconds').val(secLeft); 
},1000); 

демо: http://jsfiddle.net/EnigmaMaster/pyRR8/14/

+3

Он мчит каждый второй. Проблема в ваших значениях. – mddw

ответ

4

Вам необходимо пересчитать оставшееся время в течение интервала, в противном случае вы будете продолжать, чтобы установить его на ту же величину.

+0

ahhhh, спасибо! Я склоняюсь к этой ошибке. Не в первый раз, когда я проводил время, пытаясь понять, почему что-то не работает только для обнаружения его причины, я не включил переменные в функцию lol – EnigmaMaster

2

Ваш код не обновлял переменную currentDate. Я обновил код на jsFiddle и вставьте его здесь:

var endDay = new Date('May 24, 2012 11:30:00'); 

var countDown = setInterval(function(){ 
    var currentDate = new Date(); 

    var daysdecimal = (endDay - currentDate)/(1000*60*60*24); 
    var daysLeft = Math.floor(daysdecimal); 
    var hoursdecimal = (daysdecimal - Math.floor(daysdecimal))*24; 
    var hoursLeft = Math.floor(hoursdecimal); 
    var minLeft = 60 - currentDate.getMinutes(); 
    var secLeft = 60 - currentDate.getSeconds(); 

    $('#days').val(daysLeft); 
    $('#hours').val(hoursLeft); 
    $('#minutes').val(minLeft); 
    $('#seconds').val(secLeft); 
},1000); 
+0

Спасибо за помощь! – EnigmaMaster

Смежные вопросы