【问题标题】:Jquery countdown but if page refresh/F5 still keep timerJquery倒计时但如果页面刷新/ F5仍然保持计时器
【发布时间】:2013-03-21 16:40:47
【问题描述】:

我正在寻找 jquery 插件倒计时,但如果页面刷新仍然保持 conter。我正在申请问卷,我想在 60 分钟之前显示倒数计时器。我的应用程序现在如果用户登录开始回答问题,他会一一回答,该问题是每页一个问题。因此,如果下一个问题页面将刷新。所以现在如果用户想回答下一个问题倒数计时器将重置为默认值。 现在我正在使用 jquery 插件这个http://keith-wood.name/countdown.html

带代码:

   $(function () {
        var d = new Date();
        d = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes()+59, 59);
        $('#defaultCountdown').countdown({until: d, format: 'MS'});
    });

所以我的问题是,如果页面刷新而将计时器重置为默认值,是否有插件倒计时计时器。

谢谢。

【问题讨论】:

  • 您可以将计数器保存在 cookie 中。 (或 db 但 cookie 更好)。

标签: javascript jquery ajax


【解决方案1】:

您可以将初始日期存储在localStorage 中,并在页面刷新后尝试从那里恢复它。回答完问题后,您可以从localStorage删除日期

$(function () {
  var d = localStorage.getItem('date');
  if(!d) {
    d = (new Date()).getTime() + 3599000;
    localStorage.setItem('date', d);
  } else {
    d = parseInt(d);
  }
  $('#defaultCountdown').countdown({until: new Date(d), format: 'MS'});
});

function goNext() {
  localStorage.removeItem('date');
  // Go to next question
  ...
}

工作示例:http://jsbin.com/oxovih/2/edit

【讨论】:

  • @LorenRamly 我已经更新了示例,现在它可以工作了。你可以在 JSBin 上查看。你的最后期限计算算法也有错误,所以我修复了一点:)
【解决方案2】:

您可以通过将截止日期保存在 cookie 中来做到这一点,并在每次请求时从该 cookie 中获取值。您的代码会稍微复杂一点,但它会完成这项工作。你需要jQuery Cookie plugin,你可能需要read up on how to use it

This is what I come up with。您可以更改 withCookie 的值以查看保存和不保存请求之间的截止日期之间的区别(单击“运行”而不是重新加载 - 实际上,它会做同样的事情)。由于我找不到托管您正在使用的倒计时插件的 CDN,因此我只打印了截止日期 - 但由于您想要确保截止日期保持固定,您现在唯一需要做的就是生成jsFiddle中的deadline date变量das(秒除外),然后调用

$('#defaultCountdown').countdown({until: d, format: 'MS'});

【讨论】:

  • 你好。好的,我将使用 cookie 进行测试。谢谢。
  • 我已经解决了回调函数并将分秒存储到mysql,因为如果我使用cookie,如果用户使用其他计算机登录如何。我的问题,它是否需要大内存并且总是每秒钟更新一次数据库 mysql?谢谢
  • @LorenRamly:如果您使用这种方法,只需在截止日期到期时节省时间。然后,在每次页面加载时,您从数据库中加载截止日期,并为到期日期设置一个计数器。无需每秒更新数据库 - 您只需在页面加载时读取它,并且只在需要更改截止日期时写入它。
  • 如果这解决了您的问题,请不要忘记将答案标记为“已接受”(通过勾选投票计数下的小检查)。另外,请确保您对所有对您有帮助的答案都投赞成票=)
  • @LorenRamly:嗨,我有类似的任务要完成。您能否提供一些线索,您是如何使用回调实现它的?谢谢
猜你喜欢
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多