2012-03-19 13 views
0

ネットの周りのコードスニペットからこの小さな機能を作成しました。それは、私がページをリフレッシュすると元の時間に再び戻っても、カウントダウンの目盛りが1つではなく2秒ごとに減少することを除いて、期待されることをします。あなたは問題が何であるか見ることができますか?jquery date difference trouble

   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

あなたが今やっていることdatevalue--;

を削除し、特定のエポックタイムdatevalueにカウントダウンすることです。しかし、1ダックごとに1秒ずつ減らしています。一方、現在の時刻はsetTimeoutに渡されますので、あなたは時間をずらして移動し、ターゲットを自分自身に引き寄せます。

curdateの最初の呼び出しは、どこかに保存しておいてください。またはdatevalue--;を削除します。

+0

これは最も明白なことでしたが、なぜ私がそれを監督するのかわかりません。ありがとうEkin :) –