Обратный отсчет JavaScript и ошибка setTimout - PullRequest
0 голосов
/ 26 мая 2011
function initCountdown(countdownDiv, endDate, endMsg) {

current_date = new Date();                                  
time_left = endDate.getTime() - current_date.getTime();

if(time_left>0) {
    time_left = Math.floor(time_left/1000);                 
    days=0;hours=0;mins=0;secs=0;out="";                

    days=Math.floor(time_left/86400);
    time_left=time_left%86400;

    hours=Math.floor(time_left/3600);
    time_left=time_left%3600;

    mins=Math.floor(time_left/60);
    time_left=time_left%60;

    secs=Math.floor(time_left);             

    var daysTxt = "<strong>"+days +"</strong>day"+((days!=1)?"s":"");                       
    var hoursTxt  = "<strong>"+hours +"</strong>hour"+((hours!=1)?"s":"");
    var minTxt = "<strong>"+mins +"</strong>min"+((mins!=1)?"s":"");
    var secTxt = "<strong>"+secs +"</strong>sec";

    var finalTxt = daysTxt + " : " + hoursTxt+ " : " + minTxt + " : "+ secTxt;
    $(countdownDiv).html(finalTxt)

    setTimeout("initCountdown('"+ countdownDiv +"', '"+ endDate +"', '"+ endMsg +"' )", 1000);
}else{
    $(countdownDiv).html(endMsg)
}

}

кажется, все работает, кроме строки с setTimeout, вероятно, я ошибаюсь при отзыве функции. Может кто-нибудь сказать мне, где ошибка?

ТНХ

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Вы не можете передать countdownDiv или endDate в строке.Замените:

setTimeout("initCountdown('"+ countdownDiv +"', '"+ endDate +"', '"+ endMsg +"' )", 1000);

на:

setTimeout(function(){initCountdown(countdownDiv, endDate, endMsg); countdownDiv = null; endDate = null; endMsg = null}, 1000);

Установка в null - это грязный трюк, который нужно исправить для плохой сборки мусора в некоторых браузерах.

0 голосов
/ 26 мая 2011

setTimeout принимает функцию в качестве первого параметра.Удалить ведущие и конечные кавычки

...