javascript - 在计时器结束时显示一段时间的消息
问题描述
我很想知道如何在计时器结束时显示一条消息一段时间(1 分钟),然后再次循环。
所需过程的示例:
- 计时器开始 2 分钟(“02:00”)
- 计时器在结束 1 分钟后被消息(“等待...”)替换,所有这些都在循环中完成
谢谢你,昆汀 S。
我已经实现了计时器,但我想念的不仅仅是监视器标签被我想在从头开始进程之前放置 1 分钟的消息所取代
<div><span id="time">02:00</span></div>
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
setInterval(function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
window.onload = function () {
var twoMinutes = 60 * 2,
display = document.querySelector('#time');
startTimer(twoMinutes, display);
};
解决方案
我会通过在时间达到零后停止间隔并在一分钟后使用重新启动来做到这一点setTimeout
顺便说一句,您的代码有一个小错误,提供的回调setInterval
在间隔开始时不会运行,而只会在一个间隔(在您的情况下为一秒)之后运行。我已经在这里解决了。
我还调整了时间以减少等待。
function startTimer(duration, display, pause) {
var timer = duration, minutes, seconds;
const updateTime = function () {
minutes = parseInt(timer / 60, 10);
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
display.textContent = "wait...";
clearInterval(intervalId);
setTimeout(function () {
startTimer(duration, display, pause)
}, pause*1000)
}
}
const intervalId = setInterval(updateTime, 1000);
updateTime();
}
window.onload = function () {
var interval = 4,
display = document.querySelector('#time');
startTimer(interval, display, 2);
};
<div><span id="time">XX:XX</span></div>
推荐阅读
- pandas - Pandas 指的是采样时间序列的组的开始和结束日期
- html - 具有“边界半径:100%;” 当字体大小改变时作为一个理想的圆圈
- python - Pandas 突然更改日期格式
- python - 将颜色条置于 2d 直方图上方(而不是下方)
- soot - 在 Soot 中为 java 代码使用类和方法
- java - 如何在 Java 的 Native HTTP Client 上使用代理密码认证
- java - 如何使 addSnapshotListener 不启动新活动?适用于 Java 但不适用于 Kotlin
- r - 获取R中两个元素的组合
- cuda - NVCC 不会在 /usr/lib/x86_64-linux-gnu 中查找库 - 为什么?
- youtube-api - Youtube API inStream 参数为空