0

24時間のカウントダウンタイマーがあります。問題は、ページが更新されるたびにタイマーが再起動することです。同じユーザーに対して/更新時に再起動しないように、Cookie を作成するにはどうすればよいですか? もし 0 になったら、また再起動しますか?

これまでのところ:

<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>
4

2 に答える 2

0

まず、Cookie を設定して読み取る関数が必要です。これには、この回答で指定された関数を使用しますCookie から値を作成して読み取るにはどうすればよいですか?

したがって、コードには と の 2 つの関数がcreateCookieありsetCookieます。

以下に示すように、ページの読み込み時にCookieを設定して取得します

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);

両方の機能が正常に機能し、それらを維持します。

クッキー期間として 365 日を使用しました。開始時間が必要です。

要件に従ってコードを変更します。

このコードについて説明が必要な場合はお知らせください。

于 2013-05-16T04:41:38.923 に答える
0
   document.cookie="name=" + cookievalue;
   alert("Setting Cookies : " + "name=" + cookievalue );

ここを見る

于 2013-05-16T04:01:31.760 に答える