背景:
我正在处理的代码非常简单;有一个时钟,当前时间通过setInterval更新一秒钟。
在时钟下方有一个按钮,上面写着“停止”,按下后,它将清除Interval,按钮将显示“开始”。如果再次按下标有“开始”的按钮,则会继续计时器以当前时间运行。因此,这个按钮可以切换时钟的间隔,并根据其状态更改为“开始”或“停止”。 W3Schools: JS Timing是我最初参考的网站,用于创建我正在使用的代码。这是我学习setInterval和clearInterval工作原理的地方。我还采用了一些示例代码并进行了调整,以尝试使时钟计时器切换开关。
代码:
var clock09 = window.setInterval(myTimer09, 1000);
function myTimer09() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("req09").innerHTML =
"<h1>" + t + "</h1>";
}
function toggle10() {
var button = document.getElementById("button10").innerHTML;
if (button == "Stop") {
window.clearInterval(clock09);
document.getElementById("button10").innerHTML = "Start";
} else {
clock09 = window.setInterval(myTimer09, 1000);
document.getElementById("button10").innerHTML = "Stop";
}
}
<span class="center" id="req09"></span>
<button type="button" id="button10" onclick="toggle10()" class="button">Stop</button>
https://jsfiddle.net/dtc84d78/
问题:我的问题是,按钮从“停止”按钮切换到“开始”按钮,但 clearInterval
未应用于setInterval的变量。
我已在SO中搜索了类似的问题,例如这个, 并按照他们的建议去尝试,但还是没有解决。经过数小时的尝试后,我决定直接从W3Schools复制并粘贴一些示例到jsFiddle中,但这甚至也不起作用(包含在jsfiddle链接中)?
我真的很想知道为什么任何与 clearInterval()
相关的东西对我都不起作用?这可能是我的电脑,浏览器或其他任何原因吗?我来到SO作为我的最后资源,所以如果有人能给我一些解决这个问题的指导,我会以你的名字命名我的第一个孩子。
提前感谢您。
额外信息:我目前正在使用Mac桌面,使用Komodo编写代码,使用Google Chrome预览代码。
更新:
我在评论中提到过,代码是在外部的 .js 文件中编写的。然后将该文件链接在 head 标签之间,并在 body 结束标签之前链接。
<head>
<meta charset="utf-8" />
<title>Program</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/program-05.css">
<script type="text/javascript" src="scripts/program-05.js"></script>
</head>
<body onload="checkCookies(); setTimeout(function() { func11() }, 5000);">
. . . code for stuff
. . . code for clock timer
. . . code for other stuff
<script type="text/javascript" src="scripts/program-05.js"></script>
</body>
<head>
<meta charset="utf-8" />
<title>Program</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/program-05.css">
<script type="text/javascript" src="scripts/program-05.js"></script>
<script>
///*
var clock09 = window.setInterval(myTimer09, 1000);
function myTimer09() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("req09").innerHTML =
"<h1>" + t + "</h1>";
}
function toggle10() {
var button = document.getElementById("button10").innerHTML;
if (button == "Stop") {
window.clearInterval(clock09);
document.getElementById("button10").innerHTML = "Start";
} else {
clock09 = window.setInterval(myTimer09, 1000);
document.getElementById("button10").innerHTML = "Stop";
}
}
//*/
</script>
</head>
function toggle10() {
更改为document.toggle10 = function() {
来简单修复你的代码。 - Matt Way