Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止计时器复位_Javascript_Jscript - Fatal编程技术网

Javascript 防止计时器复位

Javascript 防止计时器复位,javascript,jscript,Javascript,Jscript,我正在制作一个倒计时脚本,当时间达到0时退出程序 问题是当页面重新加载时,计时器会从头开始重新启动 有没有办法防止计时器复位 // set the date we're counting down to var target_date = new Date().getTime(); var delay=100; // variables for time units var days, hours, minutes, seconds; // get tag elemen

我正在制作一个倒计时脚本,当时间达到0时退出程序

问题是当页面重新加载时,计时器会从头开始重新启动

有没有办法防止计时器复位

  // set the date we're counting down to
  var target_date = new Date().getTime();
  var delay=100;
  // variables for time units
  var days, hours, minutes, seconds;

  // get tag element
  var countdown = document.getElementById("countdown");

  // update the tag with id "countdown" every 1 second
  setInterval(function () {

        // find the amount of "seconds" between now and target
        var current_date = new Date().getTime();
        var seconds_left = (current_date - target_date) / 1000;
        var a=(delay-seconds_left);
        // do some time calculations

        minutes = parseInt(a / 60);
        seconds = parseInt(a % 60);
        var progress = a/delay*100;

        // format countdown string + set tag value
        countdown.innerHTML = '<div  Class=outer style="font-size:20px;width:'+progress+'%">'+minutes + "m: " + seconds + "s" + '</div>';

        if(a <= 0)
        {
        window.open("a.html")

        self.close();
        //var wind = window.open("a.html");    
        }

  }, 1000);
//设置我们倒计时的日期
var target_date=new date().getTime();
无功延迟=100;
//时间单位变量
var天、小时、分钟、秒;
//获取标记元素
var countdown=document.getElementById(“倒计时”);
//每1秒更新id为“倒计时”的标签
setInterval(函数(){
//找出从现在到目标之间的“秒数”
var current_date=new date().getTime();
var秒数左=(当前日期-目标日期)/1000;
var a=(延迟-秒/左);
//做一些时间计算
分钟=分钟(a/60);
秒=parseInt(a%60);
var进度=a/延迟*100;
//格式化倒计时字符串+设置标记值
countdown.innerHTML=''+minutes+“m:''+seconds+“s”+'';

如果(a您可以将
目标日期
存储在本地存储器(或cookie)中,并在页面加载中查找。例如:

var target_date = localStorage.target_date;
if (target_date) {
    // Found it in local storage, turn the string into a number
    target_date = parseInt(target_date);
} else {
    // Didn't find it in local storage, get the target and 
    target_date = new Date().getTime(); // See below, this looks weird
    localStorage.target_date = String(target_date);
}
本地存储不可用

请注意,只有字符串和某些其他与存储兼容的项可以存储在本地存储中,这就是为什么我要显式地处理上述数字的字符串版本。如果需要存储更复杂的信息,JSON通常是一种有用的格式



你的代码初始化
target\u date
对我来说没有多大意义:它抓住了现在的时间。我希望倒计时能抓住
target\u date
未来的时间。在任何情况下,替换该行(或替换你存储的内容)必要时。

或者,您可以始终将当前时间放入cookie中,并在加载页面时加载该cookie。

“有没有办法防止计时器重置?”与您的标题“防止刷新”完全不同建议。它获取页面打开的时间,然后current_date每秒获取一次日期。它计算时间之间的差异;当时间间隔大于给定程序停止的延迟时间时。@user3852052:啊,明白了。那么上面的方法应该行得通。这使设置和获取Cookie值变得非常容易。没有它,您将ld可能需要编写自己的函数或以特殊格式设置值,并设置过期时间。我发布的链接中已经有getCookie()、setCookie()和checkCookie()函数。它们非常容易理解和使用。