【问题标题】:how can i fix my timer?i don't know why it doesnt work [closed]我怎样才能修复我的计时器?我不知道为什么它不起作用[关闭]
【发布时间】:2021-03-12 22:54:16
【问题描述】:

我正在尝试制作一个计时器,但我无法让它停止。我正在使用 setinterval() 和 clearinterval() 我是新的使用这种方法,所以我不知道我是否以正确的方式使用它们 这是我的代码:

var estado = "desactivado";

function play() {
  if (estado == "desactivado") {
    console.log(estado);
    estado = "activado";
    var mytimer = setInterval(() => {
      timer();
    }, 1000);
  } else if (estado == "activado") {
    clearInterval(mytimer);
  }
}
function timer() {
  let segundos = document.getElementById("segundos");
  let minutos = document.getElementById("minutos");
  let horas = document.getElementById("horas");
  if (segundos.value < 60) {
    segundos.value++;
  } else {
    if (segundos.value == 60) {
      if (minutos.value == 60) {
        horas.value++;
        minutos.value = 00;
        segundos.value = 00;
      } else {
        minutos.value++;
        segundos.value = 00;
      }
    }
  }
}

【问题讨论】:

  • 问题在于变量 mytimer 的范围 - 每次调用 play 时它都是不同的变量,因此 clearInterval(mytimer) 不起作用
  • 因为 myTimer 是在函数中定义的......仅供参考:setTimeout 对于计时器来说是不准确的。
  • 拜托 HTLM 部分... -> id="segundos" 的 HTML 元素是什么?选择框?

标签: javascript timer setinterval clearinterval


【解决方案1】:

您刚刚在 if{} 块中定义了 mytimer。所以你不能得到 else 块中的值。也许您可以在与 estato 相同的级别上定义 var mytimer。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2022-11-10
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多