javascript - JavaScript 倒数计时器从零开始计数
问题描述
这可能是一个非常简单的问题,但我有一个 JavaScript 倒数计时器,但我无法阻止它从 0:00 开始计数。它不会在此时停止,而是会继续到 -1:59 等。
我还希望它在计时器达到零时播放哔声(可以在此处找到)。
这是我到目前为止的代码:
<div class="stopwatch">
<div class="circle">
<div class="time" id="timer"></div>
</div>
</div>
<script>
document.getElementById('timer').innerHTML =
02 + ":" + 30;
startTimer();
function startTimer() {
var presentTime = document.getElementById('timer').innerHTML;
var timeArray = presentTime.split(/[:]+/);
var m = timeArray[0];
var s = checkSecond((timeArray[1] - 1));
if(s==59){m=m-1}
document.getElementById('timer').innerHTML =
m + ":" + s;
console.log(m)
setTimeout(startTimer, 1000);
}
function checkSecond(sec) {
if (sec < 10 && sec >= 0) {sec = "0" + sec}; // add zero in front of numbers < 10
if (sec < 0) {sec = "59"};
return sec;
}
</script>
对此的任何帮助将不胜感激。
解决方案
要在计数器达到零时停止计数器,您必须停止调用 startTimer() 函数。在下面的代码片段中,我已经实现了一个检查来做到这一点。
function startTimer() {
var presentTime = document.getElementById('timer').innerHTML;
var timeArray = presentTime.split(/[:]+/);
var m = timeArray[0];
var s = checkSecond((timeArray[1] - 1));
if(s==59){m=m-1}
document.getElementById('timer').innerHTML =
m + ":" + s;
console.log(m)
// Check if the time is 0:00
if (s == 0 && m == 0) { return };
setTimeout(startTimer, 1000);
}
推荐阅读
- javascript - 如何检测键盘按键上的点击事件:播放/暂停(▶/❚❚),Electron Js 上的 Next 和 Previous
- reactjs - 不知道如何在反应中实现这个过滤器
- arrays - 如何在 Typescript 中键入返回 2 个或多个字符串数组的交集的递归函数?
- loops - 使用 Fortran 读取二维表
- javascript - 如何将类删除到行 ID?
- android - Compose 中的列权重分布
- android - 如何使用 React Native 启用全屏通知
- c - 如何将指针传递给C中函数的参数
- mongodb - 如何使用查找从 2 个不同的集合中获取数据,以及如何在查找中添加一些条件以根据某些条件获取数据?
- karate - 如何在空手道工具的 API 请求中传递动态值?