JavaScript обратный отсчет времени от разницы php - PullRequest
0 голосов
/ 13 марта 2012

Я бы хотел отсчитать время, которое является разницей между временем от php, результат - метка времени.

{var $time = new \DateTime()}        

<div class="date" data-date="{= ($time2->getTimestamp() - $time->getTimestamp())*1000}">

В дате-дате у меня есть разница во времени [метка времени].Теперь я хочу отсчет времени на этот раз.Я получаю эту информацию из HTML в JS.

$(function() {        
    $(".date").each(function(){         
        time = $(this).data('date');        
        $.countdown($(this).children(".countdown"), time);
    });
}); 

Там взят код, который не работает должным образом.

jQuery.countdown = function(selector, datevalue) {

                    var amount = datevalue;

        // catch past dates
        if(amount < 0){
            $(selector).html("Done");
        }

        // date is in the future, calculate the diff
        else{
            days=0;hours=0;mins=0;secs=0;out="";

            amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs

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

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

            mins=Math.floor(amount/60);//minutes
            amount=amount%60;

            secs=Math.floor(amount);//seconds

            //if(days != 0){out += days +" day"+((days!=1)?"s":"")+", ";}
                            //if(days == 0) {
                                if(days != 0 || hours != 0){out += ((hours<10)?"0":"") + hours +":";}
                                if(days != 0 || hours != 0 || mins != 0){out += ((mins<10)?"0":"") + mins +":";}
                                out += ((secs<10)?"0":"") + secs;
                                $(selector).html(out);
                            //}
            // run it all again
            setTimeout(function() {  
                $.countdown(selector, datevalue);
            }, 1000); 

        }

};

Время от JS находится в нужном месте, но оно необратный отсчет

1 Ответ

0 голосов
/ 13 марта 2012

Ответ очень прост: вы не уменьшаете datevalue переменную. То же самое для всех итераций

Посмотрите на приведенный ниже пример, он отлично работает

jQuery.countdown = function(selector, datevalue) {

    var amount = datevalue;

    // catch past dates
    if(amount < 0){
        $(selector).html("Done");
    }

    // date is in the future, calculate the diff
    else{
        datevalue--;
        $(selector).html(datevalue);
        setTimeout(function() {  
            $.countdown(selector, datevalue);
        }, 1000); 
    }
};

$.countdown('.date', 10);​​​
...