javascript - 我对 setInterval() 有一些问题
问题描述
我希望我的秒表好像完成了 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 seconds
,并timerMinute
使用整数除以 60 的结果,而就像在您的初始代码中一样直接timerText
接收。seconds
该async
关键字没有为您的代码添加任何价值,因为它没有使用承诺,所以我删除了它。
这是一个稍微详细的示例来演示功能:
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>
推荐阅读
- python-3.x - 为什么输出是“p未定义”?
- ios - Flutter iOS 电子邮件文本字段内容类型
- c# - 将实例传递给与 registerclassmap 一起使用的类
- sql - SQL 查询以查找列中“数字”的总出现次数
- r-markdown - 章节中首次引用的完整作者列表 [apa.csl]
- c++ - 加载和保存大量结构化数据到文件 c++
- python - 如何为两个变量代数问题编写代码
- python - 数据集具有 NaN 值时的 Seaborn 配对图错误
- c - GTK+ 托盘/状态菜单未显示 - 显示箭头
- rust - 在 rust 中为什么需要类型注释,即使它们在通用特征中明确指定