javascript - 我在 setInterval() 方面遇到一些问题

标签 javascript

我希望我的秒表好像 60 秒已完成。应该有分钟和秒的增量再次从 0 开始。我尝试了很多方法来做到这一点,但当时间为一分钟时它总是停止工作..它是否是 setInterval()

中内置的问题
async timer() {


  var timeout = setInterval(() => {
    count++
    this.timerSecond.innerText = count;
    if (count > 59) {
      count = 0;
      this.timerSecond.innerText = count;
      count1++
      this.timerMinute.innerText = count1

    }
  }, 100);
  console.log(timeout);

  return timeout;
}

最佳答案

这个方法对你有用吗?

timer () {
  let seconds = 0;

  const tick = () => {
    this.timerText.textContent = seconds;
    this.timerSecond.textContent = `${seconds % 60}`.padStart(2, '0');
    this.timerMinute.textContent = Math.floor(seconds / 60);
    seconds++;
  };

  tick();
  return setInterval(tick, 1000);
}

很难说为什么有两个单独的 setInterval() 调用,但我删除了每 100 毫秒调用一次的调用,并将逻辑合并为一个调用。

timerSecond 使用 的 60 模,timerMinute 使用整数除以 60 的结果,而 timerText code> 只是直接接收,就像在您的初始代码中一样。

async 关键字没有为您的代码添加任何值,因为它都没有使用 Promise,所以我将其删除。

这是一个稍微详细的示例来演示功能:

class Stopwatch {
  timerText = document.querySelector('.text');
  timerSecond = document.querySelector('.second');
  timerMinute = document.querySelector('.minute');

  timer () {
    let seconds = 0;

    const tick = () => {
      this.timerText.textContent = seconds;
      this.timerSecond.textContent = `${seconds % 60}`.padStart(2, '0');
      this.timerMinute.textContent = Math.floor(seconds / 60);
      seconds++;
    };

    tick();
    return setInterval(tick, 1000);
  }
}

new Stopwatch().timer();
<div class="text"></div>
<div>
  <span class="minute"></span>:<span class="second"></span>
</div>

关于javascript - 我在 setInterval() 方面遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59330729/

相关文章:

javascript - 在 android phonegap 上获取 SharedPreference 值

javascript - 将外部 JS 文件包含到 HTML 中的问题

javascript - 使用 Webpack 加载时,随机文本会填充到 CSS 选择器?

javascript - JS - 使用 $q.when() 按顺序运行 promise,最后我该如何添加?

javascript - 添加/删除导航栏折叠显示类时切换正文类

javascript - jQuery:关闭浏览器时删除cookie( session cookie)

javascript - DOM 有什么问题?

javascript - 当您输入列表时,如何在过滤器中以粗体输入字符的每个实例?

javascript - 通过包含 jQuery 和 jQuery UI,我是否加载了 jQuery 两次?

javascript - 在台式机和移动设备上检测点击(或触摸)的最可靠方法是什么?