Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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_Loops_Timer_Countdown_Infinite - Fatal编程技术网

Javascript 如何创建一个在页面刷新后工作的计时器循环?

Javascript 如何创建一个在页面刷新后工作的计时器循环?,javascript,loops,timer,countdown,infinite,Javascript,Loops,Timer,Countdown,Infinite,我创建了自己的倒计时,似乎我缺少了一个部分,每当我刷新页面时,它也会刷新计时器本身。我希望通过该脚本最大限度地提高性能,那么如何使其无限循环呢 代码如下: function startGRBTimer(duration, display) { var timer = duration, hours, minutes, seconds; setInterval(function() { days = parseInt(timer / (24 * 60 * 60), 10);

我创建了自己的倒计时,似乎我缺少了一个部分,每当我刷新页面时,它也会刷新计时器本身。我希望通过该脚本最大限度地提高性能,那么如何使其无限循环呢

代码如下:

function startGRBTimer(duration, display) {
  var timer = duration,
    hours, minutes, seconds;
  setInterval(function() {
    days = parseInt(timer / (24 * 60 * 60), 10);
    hours = parseInt(timer % (24 * 60 * 60) / (60 * 60), 10);
    minutes = parseInt(timer % (60 * 60) / 60, 10);
    seconds = parseInt(timer % 60, 10);
    hours = hours < 10 ? "0" + hours : hours;
    minutes = minutes < 10 ? "0" + minutes : minutes;
    seconds = seconds < 10 ? "0" + seconds : seconds;
    display.textContent = days + "d" + " " + hours + "h " + minutes + "m " + seconds + "s";
    --timer;
    if (timer <= 0) {
      timer = duration;
    }
  }, 1000);
}

var display = document.querySelector("#grb");
startGRBTimer(60, display);
功能启动计时器(持续时间,显示){
var定时器=持续时间,
小时,分钟,秒;
setInterval(函数(){
天数=parseInt(计时器/(24*60*60),10);
小时=parseInt(计时器%(24*60*60)/(60*60),10);
分钟=parseInt(计时器%(60*60)/60,10);
秒=parseInt(计时器%60,10);
小时=小时<10?“0”+小时:小时;
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=天+天+小时+小时+分钟+米+秒+秒;
--定时器;

如果(timer这正是此代码的工作方式,那么它没有问题。每次刷新页面时,脚本都会重新运行,
var timer=duration,hours,minutes,seconds;
会在加载页面时创建


您应该先创建变量,然后将变量存储到用户的本地存储器中,并让您的程序从该变量(或数组)读取信息。

您需要独立于web应用程序执行某些工作,并能够在页面刷新后生存,对吗

这很可能对您有用。

对于这种情况,我们可以“误用”(参见文档链接),如下面的示例。或者您可以使用,但这不适用于本地文件(
file:///...
)。正因为有了这个
窗口,名称也变得更好、更短

解决方案

功能启动计时器(持续时间,显示)
{
var timer=window.name=''?持续时间:window.name,
小时,分钟,秒;
setInterval(函数()
{
天数=parseInt(计时器/(24*60*60),10);
小时=parseInt(计时器%(24*60*60)/(60*60),10);
分钟=parseInt(计时器%(60*60)/60,10);
秒=parseInt(计时器%60,10);
小时=小时<10?“0”+小时:小时;
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.textContent=天+天+小时+小时+分钟+米+秒+秒;
--定时器;

如果(计时器),那么哪种方法是最好的,并保持最佳性能?查看localstorage对象,对其进行搜索。我的意思是,在代码本身(我正在学习JS atm)中,在哪里添加localstorage以及如何最大限度地发挥其潜力是最好的?在阅读了如何工作的基本概念之后(mdn web文档写得非常好)您必须定期将时间(剩余时间或已用时间)存储到变量中。这可以通过设置间隔来实现,也可以在页面关闭时检测。我对使用设置间隔非常感兴趣!我只是不确定如何正确实现它:/