javascript - 刷新页面时计时器会自动刷新

标签 javascript php jquery

这里我面临一个问题,我正在 php 中准备测验应用程序 当用户开始测试计时器是否正常运行时,我遇到一个问题。当用户询问第二个问题时,计时器再次开始 这是我的代码:-

window.onload = start();
var mins = 10;

var secs = 0;

var timer;



function start() {


    timer = setInterval(
        function() {
            update();
        }, 1000);

}



function update() {

    var timeField = document.getElementById('time');

    if (secs == 0) {

        if (mins == 0) {

            timeField.innerHTML = 'Times up!';

            clearInterval(timer);

            alert('Times up');

            return;

        }

        mins--;

        secs = 59;

    } else {

        secs--;

    }

    if (secs < 10) {

        timeField.innerHTML = 'Time left: ' + mins + ':0' + secs;

    } else {

        timeField.innerHTML = 'Time left: ' + mins + ':' + secs;

    }

}
<div id="time" > </div>

最佳答案

您需要将时间存储在 cookie 或 localStorage 上,或者使用服务器时间。这是使用 localStorage 的代码

  window.onload = start();
  var timer;

  function start() {
    var mins = 10;
    var secs = 0;
    var end = parseInt(localStorage.getItem('end'));
    var time;
    if (! isNaN(end)) {
      time = Math.floor((end - Date.now()) / 1000);
    } else {
      time = mins * 60 + secs
      localStorage.setItem('end', (Date.now() + (time * 1000)));
    }
    timer = setInterval(update(time), 1000);
  }

  function update(time) {
    return function() {
      var timeField = document.getElementById('time');
      if (time <= 0) {
        timeField.innerHTML = 'Times up!';
        clearInterval(timer);
        alert('Times up');
        return;
      } else {
        time--;
      }
      var mins = Math.floor(time / 60);
      var secs = time % 60;
      if (secs < 10) {
        timeField.innerHTML = 'Time left: ' + mins + ':0' + secs;
      } else {
        timeField.innerHTML = 'Time left: ' + mins + ':' + secs;
      }
    }
  }
<div id="time" > </div>

关于javascript - 刷新页面时计时器会自动刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40189530/

相关文章:

javascript - 如何直接链接到输入字段?

javascript - 悬停时模糊整个背景

javascript - 获取json数组值并通过jquery将其放入单独的div中

javascript - 如何根据所选的下拉值更改表单值操作

jquery - 添加文本链接 - 链接中包含文本

javascript - 困扰为什么 split 功能不起作用

javascript - 从 HTML 中读取 <br> 并在 javascript 中设置为\n

php - 有没有办法通过将 php 保存到数据库来清理 HTML 代码?

java - 无法配置 Unirest 请求正文

php - MySQL:计算用户可选择的年份范围的总数