javascript - 我试图弄清楚如何让 'Pause' 和 'Stop' 按钮在我的计时器上工作

标签 javascript jquery timer

我正在尝试弄清楚如何让我的计时器正常工作。计时器本身可以工作,但“暂停”和“停止”按钮似乎没有响应。

这是我到目前为止的代码:

    var h1 = document.getElementsByTagName('h1')[0],
      start = document.getElementById('start'),
      pause = document.getElementById('pause'),
      stop = document.getElementById('stop'),
      seconds = 0,
      minutes = 0,
      hours = 0,
      t;

    function add() {
      seconds++;
      if (seconds >= 60) {
        seconds = 0;
        minutes++;
        if (minutes >= 60) {
          minutes = 0;
          hours++;
        }
      }

      h1.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") +
        ":" + (seconds > 9 ? seconds : "0" + seconds);

      timer();
    }

    function timer() {
      t = setTimeout(add, 1000);
    }
    timer();        

//START BUTTON
    $("#start").on("click", function() {
      clearTimeout(t);
      timer();
    });

无法获得对此的回复:

//PAUSE BUTTON
    $("#pause").on("click", function() {
      clearTimeout(t);
    });
//STOP BUTTON
    $("#stop").on("click", function() {
      h1.textContent = "00:00:00";
      seconds = 0;
      minutes = 0;
      hours = 0;
    });

最佳答案

这个 fiddle 有效: https://jsfiddle.net/0a41am3v/

var h1 = document.getElementsByTagName('h1')[0];
var start = document.getElementById('start');
var pause = document.getElementById('pause');
var stop = document.getElementById('stop');
var seconds = 0;
var minutes = 0;
var hours = 0;
var t;

function add()
{
    seconds++;
    if (seconds >= 60)
    {
        seconds = 0;
        minutes++;
        if (minutes >= 60) 
        {
            minutes = 0;
            hours++;
        }
    }

    h1.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") +
        ":" + (seconds > 9 ? seconds : "0" + seconds);

    timer();
}

function timer()
{
      t = setTimeout(add, 1000);
}


$("#start").on("click", function() {
        $("#start").empty().append("start");
        clearTimeout(t);
        timer();
    });

$("#pause").on("click", function(){
    clearTimeout(t);
    $("#start").empty().append("resume");
});

$("#stop").on("click", function() {
    $("#start").empty().append("start");
    clearInterval(t);
    h1.textContent = "00:00:00";
    seconds = 0;
    minutes = 0;
    hours = 0;
 });

关于javascript - 我试图弄清楚如何让 'Pause' 和 'Stop' 按钮在我的计时器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47836875/

相关文章:

javascript - Array.push 在 forEach 循环中的 for 循环中不起作用。Javascript

javascript - 如何处理 vue js 模板中不存在的变量?

javascript - 使用 ajax 和 PHP 根据第一个选择框填充第二个选择框

Java Swing - 调用paintComponent 未清除JPanel?

javascript - 为网络应用程序实现计时器

javascript - 在计时器中以两位数显示小时、分钟和秒

javascript - 无法让 lastIndexOf 工作

javascript - 既然八进制转义已被弃用,我应该如何在 CSS 中输入 Unicode 字符?

php - 使用 PHP、javascript 或 jQuery 使图像中的所有相对路径 URL 成为完整路径

javascript - 什么可能会使点击事件触发缓慢?