2013-05-16 91 views
0

我們有一個24小時倒數計時器。問題是,無論何時頁面刷新,定時器重新啓動。我們如何創建一個cookie,使其不會爲同一用戶重新啓動?如果如果下降到0再次重新啓動?JS倒數計時器與餅乾問題

我們有什麼至今:

<script type = "text/javascript"> 
var totalSeconds; 
function initiate(seconds) 
{ 
    totalSeconds = parseInt(seconds); 
    setInterval("timeUpdate()", 1000); 
} 
function timeUpdate() 
{ 
    var seconds = totalSeconds; 
    if(seconds > 0) 
    { 
      totalSeconds--; 
      var hours= Math.floor(seconds/3600); 
      seconds %= 3600; 
      var minutes = Math.floor(seconds/60); 
      seconds %= 60; 
      var timeIs = ((hours < 10) ? "0" : "") + hours + ":" + ((minutes < 10) ? "0" : "") + minutes + ":" + ((seconds < 10) ? "0" : "") + seconds; 
      document.getElementById("timeLeft").innerHTML = "" + timeIs; 
    } 
    else 
    { 
      document.getElementById("timeLeft").innerHTML = ''; 
      document.getElementById("message").innerHTML = ''; 
    } 
} 
initiate(24 * 60 * 60); 
</script> 

回答

0
document.cookie="name=" + cookievalue; 
    alert("Setting Cookies : " + "name=" + cookievalue); 

SEE HERE

+0

我該如何使用它?哪裏?你能展示如何將這些代碼片段放在一起嗎?感謝您的幫助! – user2272002

+0

你可以在鏈接中看到一個例子 – PSR

0

首先我們需要具備的功能設置和讀取的cookie。爲此使用此答案中給出的功能How do I create and read a value from cookie?

因此,我們在代碼中有兩個功能createCookiesetCookie

現在和下面

var 
    //Get time started 
    timeStarted = getCookie('timeStarted'), 
    //To store total seconds left 
    totalSeconds, 
    //Current Time 
    currentTime = parseInt(new Date()/1000), 
    //Timer Length 
    timerLength = 24 * 60 * 60; 

if(timeStarted == "") { 

    //Time not yet started. Start now. 
    createCookie('timeStarted', currentTime, 365); 

    //We started time just now. So, we have full timer length remaining 
    totalSeconds = timerLength; 

} else { 

    //Calculate total seconds remaining 
    totalSeconds = timerLength - (currentTime - timeStarted)%(timerLength); 
} 

給出現在初始化下面

initialize(totalSeconds); 

給出這兩個功能的正常工作,使他們獲得在頁面加載的cookie。

我用了365天作爲cookie時期。我們只需要開始時間。

根據您的要求更改代碼。

讓我知道你是否需要關於此代碼的任何澄清。

+0

謝謝,但我是這方面的新手。我在哪裏把初始化(totalSeconds);究竟? – user2272002

+0

我嘗試添加第一段代碼和Cookie代碼,並設置並獲取上述說明,然後body onload initialize(totalSeconds); 但定時器在頁面刷新時重新啓動。你會如此善良,以我應該使用它的方式將所有代碼塊組合在一起?感謝您的幫助! – user2272002

+0

希望您從服務器運行文件,並在瀏覽器中啓用Cookie。從服務器運行的文件只能使用cookie播放。你可以把initialize(totalSeconds);最後。所以,有些事情是,所有的函數先來,然後給定的代碼,然後初始化。 –