проблема разницы в дате запроса - PullRequest
0 голосов
/ 19 марта 2012

Я сделал эту маленькую функцию из фрагментов кода по сети.Он делает то, что от него ожидают, за исключением того, что он уменьшается на 2 секунды каждый тик обратного отсчета вместо одного, если я обновляю страницу, он снова возвращается к исходному времени.Ребята, вы видите, в чем проблема?

                jQuery.countdown = function(selector, datevalue) {

                var amount = datevalue*1000;

                var curdate = new Date();
                curdate     =   curdate.getTime();

                var difference = amount - curdate;


                if(amount < 0 || curdate >= amount){
                    $(selector).html("Done");
                }


                else{
                    datevalue--;

                    var daysRemaining = Math.floor(difference / 1000 / 60 / 60 / 24);
                    var hoursRemaining = Math.floor(difference / 1000 / 60 / 60 - (24 * daysRemaining));
                    var minutesRemaining = Math.floor(difference / 1000 / 60 - (24 * 60 * daysRemaining) - (60 * hoursRemaining));
                    var secondsRemaining = Math.floor(difference / 1000 - (24 * 60 * 60 * daysRemaining) - (60 * 60 * hoursRemaining) - (60 * minutesRemaining));

                    $(selector).html(daysRemaining+':'+hoursRemaining+':'+minutesRemaining+':'+secondsRemaining);
                    setTimeout(function() {  
                        $.countdown(selector, datevalue);
                    }, 1000); 
                }
};




$.countdown('.date', 1332239568);

1 Ответ

1 голос
/ 19 марта 2012

Удалить datevalue--;

То, что вы сейчас делаете, - это отсчет времени до определенного времени datevalue. Но вы уменьшаете его на одну секунду каждый тик. Между тем, текущее время проходит в setTimeout, поэтому вы перемещаетесь во времени вперед и притягиваете цель к себе.

Либо сохраните исходный curdate первого звонка, сохраненный где-нибудь. Или удалите datevalue--;.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...