2015-07-13 159 views
1

我想實現使用jQuery倒計時計時器。我有一個結束時間,計時器應該倒計時,直到當前時間與它相同。jQuery的倒數計時器沒有倒計時

我從我提取採用了PHP的結束時間,我得到這個樣子的2015-07-15 17:29:31 Web服務結束時間。

我的代碼的實際行是這樣的

var then=<?php echo $server_response; ?>; 

我在搗鼓改變容易理解這樣

var then='2015-07-15 17:29:31'; 

這裏的JavaScript代碼:

var timer; 
var then='2015-07-15 17:29:31'; 
var now = new Date(); 
//now.setDate(now.getDate() + 7); 

var compareDate=then.getDate()-now.getDate(); 
timer = setInterval(function() { 
    timeBetweenDates(compareDate); 
}, 1000); 

function timeBetweenDates(toDate) { 
    var dateEntered = toDate; 
    var now = new Date(); 
    var difference = dateEntered.getTime() - now.getTime(); 

    if (difference <= 0) { 

    // Timer done 
    clearInterval(timer); 

    } else { 

    var seconds = Math.floor(difference/1000); 
    var minutes = Math.floor(seconds/60); 
    var hours = Math.floor(minutes/60); 
    var days = Math.floor(hours/24); 

    hours %= 24; 
    minutes %= 60; 
    seconds %= 60; 

    $("#days").text(days); 
    $("#hours").text(hours); 
    $("#minutes").text(minutes); 
    $("#seconds").text(seconds); 
    } 
} 

HTML

<div id="timer"> 
    <span id="days"></span>days 
    <span id="hours"></span>hours 
    <span id="minutes"></span>minutes 
    <span id="seconds"></span>seconds 
</div> 

Fiddle

+1

JS調試101;檢查控制檯:'遺漏的類型錯誤:then.getDate不是function' –

回答

2

要想從列使用new Date(date)date

看到的變化:

var compareDate = new Date(then) - now.getDate(); 
//    ^^^^^^^^^^^^^^ instead of then.getDate() 

timeBetweenDates()

var dateEntered = new Date(toDate); 
//    ^^^^^^^^^^^^^^^^^ Parse to date instead of using it as it is 

Demo

編輯

而且改變你得到從服務器日期的方式。 在引號包裹。

var then = '<?php echo $server_response; ?>'; // String 
+0

我正在爲NaN。在小提琴中它有效;可能的原因是什麼? @Tushar –

+0

@SajeevC不能說,直到我看到的代碼。看起來你正在期待的東西是'Number'而不是 – Tushar

+0

@SajeevC這是服務器端的問題,它與javascript無關 – Tushar