清除间隔
Clearing an interval
我正在学习 Javascript,我遇到困难并理解为什么我编辑的一段代码(见下文)不起作用。目的很简单——我想创建一个停止并再次运行时间的按钮。我什至打印了文本以确保我的代码输入了 'if' 和 'else' 语句,但 clearInterval 似乎不起作用。非常感谢帮助!
(*原始代码属于 w3schools,我添加了 "loop function" 只是为了看看它是否会起作用,但它不起作用 ;( )
这是代码:
<!DOCTYPE html>
<html>
<body>
<p>A script on this page starts this clock:</p>
<p id="demo"></p>
<button onclick="checkTime()">Stop time/Start time again</button>
<p id="test"></p>
<script>
var myCounter = 0;
var myVar = setInterval(myTimer ,1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
function checkTime() {
myCounter += 1;
if (myCounter == 1) {
clearInterval(myVar);
document.getElementById("test").innerHTML = "ok";
} else {
var myVar = setInterval(myTimer ,1000);
myCounter = 0;
document.getElementById("test").innerHTML = "clicked again";
}
}
</script>
</body>
</html>
谢谢!
从第二个 var myVar = setInterval...
中删除 var
第二个是你的函数的范围,"overrides"第一个...
function checkTime() {
myCounter += 1;
if (myCounter == 1) {
clearInterval(myVar);
document.getElementById("test").innerHTML = "ok";
} else {
myVar = setInterval(myTimer ,1000);
myCounter = 0;
document.getElementById("test").innerHTML = "clicked again";
}
}
只是快速浏览了您的代码,但我注意到您正在重新声明 myVar
变量,由于 javascript 称为 hoisting.
尝试以下...
<script>
var myCounter = 0;
var myVar = setInterval(myTimer ,1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
function checkTime() {
myCounter += 1;
if (myCounter == 1) {
clearInterval(myVar);
document.getElementById("test").innerHTML = "ok";
} else {
myVar = setInterval(myTimer ,1000);
myCounter = 0;
document.getElementById("test").innerHTML = "clicked again";
}
}
</script>
我正在学习 Javascript,我遇到困难并理解为什么我编辑的一段代码(见下文)不起作用。目的很简单——我想创建一个停止并再次运行时间的按钮。我什至打印了文本以确保我的代码输入了 'if' 和 'else' 语句,但 clearInterval 似乎不起作用。非常感谢帮助!
(*原始代码属于 w3schools,我添加了 "loop function" 只是为了看看它是否会起作用,但它不起作用 ;( )
这是代码:
<!DOCTYPE html>
<html>
<body>
<p>A script on this page starts this clock:</p>
<p id="demo"></p>
<button onclick="checkTime()">Stop time/Start time again</button>
<p id="test"></p>
<script>
var myCounter = 0;
var myVar = setInterval(myTimer ,1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
function checkTime() {
myCounter += 1;
if (myCounter == 1) {
clearInterval(myVar);
document.getElementById("test").innerHTML = "ok";
} else {
var myVar = setInterval(myTimer ,1000);
myCounter = 0;
document.getElementById("test").innerHTML = "clicked again";
}
}
</script>
</body>
</html>
谢谢!
从第二个 var myVar = setInterval...
var
第二个是你的函数的范围,"overrides"第一个...
function checkTime() {
myCounter += 1;
if (myCounter == 1) {
clearInterval(myVar);
document.getElementById("test").innerHTML = "ok";
} else {
myVar = setInterval(myTimer ,1000);
myCounter = 0;
document.getElementById("test").innerHTML = "clicked again";
}
}
只是快速浏览了您的代码,但我注意到您正在重新声明 myVar
变量,由于 javascript 称为 hoisting.
尝试以下...
<script>
var myCounter = 0;
var myVar = setInterval(myTimer ,1000);
function myTimer() {
var d = new Date();
document.getElementById("demo").innerHTML = d.toLocaleTimeString();
}
function checkTime() {
myCounter += 1;
if (myCounter == 1) {
clearInterval(myVar);
document.getElementById("test").innerHTML = "ok";
} else {
myVar = setInterval(myTimer ,1000);
myCounter = 0;
document.getElementById("test").innerHTML = "clicked again";
}
}
</script>