<!DOCTYPE html>
<html lang="en">
<head>
<title>Lab 10</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body style="background-color:lightgreen;">
<input type="button" id="btnSetInterval" value="log every 3 seconds" ><br />
<input type="button" id="btnCancelSetInterval" value="cancel the logging every 3 seconds"><br />
<input type="button" id="btnSetTimeout" value="create an event to run 3 seconds from now" /><br />
<input type="button" id="btnCancelSetTimeout" value="cancel the event that is supposed to run 3 seconds from now" />
<script type="text/javascript">
$(document).ready(function() {
var intervalID;
var timeoutID;
function setIntervalCounter() {
var intervalID = setInterval(function() {
console.log("Hello World");
}, 3000)
}
function stopIntervalCounter() {
clearInterval(intervalID);
};
$("#btnSetInterval").click(setIntervalCounter);
$("#btnCancelSetInterval").click(stopIntervalCounter);
});
</script>
</body>
//当我按下第一个按钮时,计数器启动,但我无法停止计数器。 //我希望这是添加评论的正确方法,有时我会丢失视图中的代码 //我知道这个问题被多次询问,我已经尝试了所有解决方案。 :(
答案 0 :(得分:2)
从您设置间隔的行中删除单词var
。这是一个新的局部变量,而不是使用全局变量。
答案 1 :(得分:2)
您正在重新声明intervalID变量。它的作用域是setIntervalCounter()函数。删除var。像这样:
function setIntervalCounter() {
intervalID = setInterval(function() {
console.log("Hello World");
}, 3000)
}
答案 2 :(得分:1)
function setIntervalCounter() {
intervalID = setInterval(function() {
console.log("Hello World");
}, 3000)
}
这是正确的
答案 3 :(得分:0)
var intervalID = setInterval(function() {
console.log("Hello World");
}, 3000)
}
intervalID定义为函数setIntervalCounter的LOCAL变量。
因此,你应该删除&#34; var&#34;在intervalID之前,因为intervalID已经被声明为全局变量。
答案 4 :(得分:0)
我怀疑这是因为您在setIntervalCounter()函数中定义的区间ID仅限于该函数。
如果使用函数内部的'var'关键字在JavaScript中定义变量,则该变量将仅作用于该函数 - 这意味着您无法从函数外部访问它。
您的“stopIntervalCounter()”方法是针对全局“intervalID”变量(您在document.ready的第一行中定义的变量)操作的,这就是您的间隔未被清除的原因。
尝试从setIntervalCounter方法中删除var - 这意味着它将把值分配给intervalID的正确实例。