gpt4 book ai didi

javascript - 基于 setInterval 的计时器

转载 作者:行者123 更新时间:2023-12-02 14:21:39 25 4
gpt4 key购买 nike

我正在尝试创建一个类似于 qqtimer.net 上的计时器。定时器的行为如下:

  • 计时器在页面加载时显示 0。
  • 按下空格键后,计时器开始计时。
  • 再次按下空格键后,计时器停止并显示时间。
  • 再次按下空格键后,计时器将重置并启动,

等等。根据我的研究,最好的方法似乎是使用 setInterval 和 document.onkeypress。到目前为止,这是我的代码:

index.html

<!DOCTYPE html>
<html>
<head>
<script src="main.js">
</script>
</head>
<body>
<div id="timer">
0
</div>
</body>
</html>

main.js

var running = false;
document.onkeypress = function(e) {
if (e.keyCode === 0 || e.keyCode === 32) {
if (running) {
clearInterval(refresh);
} else {
var startTime = new Date().getTime();
var refresh = window.setInterval(function() {
document.getElementById('timer').innerHTML = new Date().getTime() - startTime;
}, 100);
}
}
};

这段代码对于计时器启动来说工作得很好,但是停止它似乎不起作用。它永远不会结束原始的 setInterval,因此第三次按下空格键会同时启动另一个 setInterval

我看过的多个指南都说 clearInterval(refresh) 应该停止间隔,但这似乎并不正确。

我需要更改什么才能解决此问题?

最佳答案

主要原因是您在 if 语句内声明了刷新,因此当您尝试清除它时它不可用。请查看下面的工作示例。

var running = false;
var refresh;
document.onkeypress = function(e) {
if (e.keyCode === 0 || e.keyCode === 32) {
if (running) {
clearInterval(refresh);
running = false;
} else {
var startTime = new Date().getTime();
refresh = setInterval(function() {
document.getElementById('timer').innerHTML = new Date().getTime() - startTime;
}, 100);
running = true;
}
}
};

关于javascript - 基于 setInterval 的计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38601853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com