Javascript java脚本倒计时计时器在页面刷新时重置

Javascript java脚本倒计时计时器在页面刷新时重置,javascript,html,timer,countdown,Javascript,Html,Timer,Countdown,我试图为我的网站实施倒计时,但每次页面刷新都会重置,我不知道如何修复,你们能帮我解决这个问题吗?() var定时器; var compareDate=新日期(); compareDate.setDate(compareDate.getDate()+16)//增加至截止日期+(16天) 计时器=设置间隔(函数(){ 时间间隔(比较); }, 1000); 函数时间间隔数据(toDate){ var dateEntered=toDate; var now=新日期(); var difference

我试图为我的网站实施倒计时,但每次页面刷新都会重置,我不知道如何修复,你们能帮我解决这个问题吗?()

var定时器;
var compareDate=新日期();
compareDate.setDate(compareDate.getDate()+16)//增加至截止日期+(16天)
计时器=设置间隔(函数(){
时间间隔(比较);
}, 1000);
函数时间间隔数据(toDate){
var dateEntered=toDate;
var now=新日期();
var difference=dateEntered.getTime()-now.getTime();

如果(差异由于您的倒计时计算页面开始时的结束时间,则正常/预期每次刷新页面时都会重新开始倒计时。在您的情况下,您所做的是在当前日期的基础上增加16天

如果您不想更改coutdown,则应添加一个固定日期,如下所示:

var compareDate = new Date(yyyy,MM,dd,hh,mm,ss);
yyyy
MM
等值更改为年、月、日、小时、分钟和秒,如以下示例所示:

var compareDate = new Date(2017,09,10,12,00,00);

注意:此解决方案不依赖于客户端。它将为每个连接到该页面的用户显示完全相同的倒计时。

由于倒计时计算页面启动时的结束时间,因此每次刷新页面时倒计时都会重新开始是正常的/预期的。在您的情况下,您要做的是将16天添加到页面当前日期

如果您不想更改coutdown,则应添加一个固定日期,如下所示:

var compareDate = new Date(yyyy,MM,dd,hh,mm,ss);
yyyy
MM
等值更改为年、月、日、小时、分钟和秒,如以下示例所示:

var compareDate = new Date(2017,09,10,12,00,00);

注意:此解决方案不依赖于客户端。它将为连接到页面的每个用户显示完全相同的倒计时。

如果您想使用localStorage,以下操作可能会执行。 它基本上会在第一次运行时存储比较数据

另外,由于代码段中的安全属性,这在这里不起作用,但应该在您的站点上起作用

var timer;

var savedDate = localStorage.getItem('savedDate');
var compareDate = new Date();
if (savedDate)  {
  compareDate = new Date(savedDate);
} else { 
  compareDate.setDate(compareDate.getDate() + 16); //incresed by to date + (16 days)
  localStorage.setItem('savedDate', compareDate);
}

//...rest of code

如果您想使用localStorage,可以执行以下操作。 它基本上会在第一次运行时存储比较数据

另外,由于代码段中的安全属性,这在这里不起作用,但应该在您的站点上起作用

var timer;

var savedDate = localStorage.getItem('savedDate');
var compareDate = new Date();
if (savedDate)  {
  compareDate = new Date(savedDate);
} else { 
  compareDate.setDate(compareDate.getDate() + 16); //incresed by to date + (16 days)
  localStorage.setItem('savedDate', compareDate);
}

//...rest of code


每次刷新页面时,上面的代码都会被执行,然后它会将日期设置为16天。如果您需要,那么从您第一次进入页面的16天起,您将需要执行某种客户端持久性。这里最简单的选项是localStorage。如果您不介意的话,谢谢Keith的回复,可以显示吗告诉我怎么做?每次刷新页面时,上面的代码都会执行,然后将日期设置为16天。如果您需要,那么从您第一次进入页面的16天起,您将需要执行某种客户端持久性。这里最简单的选项是localStorage。感谢Keith的帮助你的回答,如果你不介意的话,你能告诉我怎么做吗?可能是重复感谢你的回答路易斯,但如果我这样做,如果我问tmrw,它将从ryt的前一天开始?是的,没错。如果我现在开始,如果我明天回去,我将看到你的回答还剩下15天,路易斯,但如果我这样做,如果我问tmrw,它将是从一天以前开始ryt?是的,没错。如果我现在开始,如果我明天回去,我会看到还有15天没有问题。只是一个小提示,在以后的帖子中,一个好主意是使用Stack Overflow的代码段功能。这与说codepen几乎相同,但额外的好处是用户能够在SO内部运行,并且很容易地使用c复制以进行修改等。我为您编辑了您的帖子,您现在将看到您可以单击“运行代码段”以查看它的运行情况。代码段的一个缺点是,最有可能的是,代码笔的安全属性会阻止您做某些事情,这就是为什么我没有使用复制代码段,因为它无法工作(亲爱的keith,我试图更改为最新版本,但它不起作用!它仍然保持不变?将上述代码复制/粘贴到Chrome上的我的控制台中,即使在刷新我的页面后,也会不断为我提供相同的DateTime。因此我不确定你为什么会有问题。如果你说在开发者工具下运行Chrome,那么在应用程序下有一个部分n称为“本地存储”你有任何条目吗?我假设你从Web服务器上运行HTML页面?是的,Keith,我从Web服务器上运行。有一个问题,如果我运行页面,condown在没有刷新的情况下工作正常,而如果我在不同的笔记本或pc上尝试我的页面,它是从一开始就开始的…,我想显示最后期限用户..,现在用户对用户的值不同了..在这种情况下,您需要持久化数据服务器端。并且您需要某种方式来了解我们正在谈论的用户。您需要一些登录/注销逻辑。Localstorage是每个浏览器实例的..没问题..只是一个小提示,在以后的发布中,最好使用堆栈Overflow的代码段功能。它与say codepen几乎相同,但有了额外的好处,用户可以在SO内部运行,并且可以轻松复制以进行修改等。我为您编辑了您的帖子,您现在将看到您可以单击“运行代码段”查看它的运行情况。Snippet的一个缺点,很可能是codepen的安全属性阻止了您执行某些操作,这就是为什么我没有使用复制Snippet,因为它无法工作的原因:(亲爱的keith,我试图更改为最新版本,但它不起作用!它仍然保持不变?将上述代码复制/粘贴到Chrome上的我的控制台中,即使在刷新我的页面后,也会不断为我提供相同的DateTime。因此我不确定你为什么会有问题。如果你说在开发者工具下运行Chrome,那么在应用程序下有一个部分n称为“本地存储”您有任何条目吗?我还假设您从Web服务器运行HTML页面?是的Keith,我是runnin