我有一个函数,它每500毫秒就会改变一些文本的font-family,使用setInterval (我只是为了练习JavaScript)。该函数通过单击" on“按钮来调用,并且应该使用单独的"off”按钮清除间隔。然而,“关闭”按钮实际上并没有清除间隔,它只是继续。我怀疑这与范围有关,但我不知道如何用其他方式编写它。而且,我不想用jQuery来做这件事,因为毕竟,我这么做是为了学习。
<body>
<p><span id="go" class="georgia">go</span> Italian</p>
<p>
<button id="on" type="button" value="turn on">turn on</button>
<button id="off" type="button" value="turn off">turn off</button>
</p>
<script>
var text = document.getElementById("go");
var on = document.getElementById("on");
var off = document.getElementById("off");
var fontChange = function() {
switch(text.className) {
case "georgia":
text.className = "arial";
break;
case "arial":
text.className = "courierNew";
break;
case "courierNew":
text.className = "georgia";
break;
}
};
on.onclick = function() {
setInterval(fontChange, 500);
};
off.onclick = function() {
clearInterval(fontChange);
};
</script>
</body>发布于 2013-02-02 21:56:41
setInterval返回一个ID,然后使用该ID来清除间隔。
var intervalId;
on.onclick = function() {
if (intervalId) {
clearInterval(intervalId);
}
intervalId = setInterval(fontChange, 500);
};
off.onclick = function() {
clearInterval(intervalId);
}; 发布于 2013-02-02 21:56:23
setInterval函数返回一个整数值,它是您创建的"timer实例“的id。
您需要将这个整数值传递给clearInterval。
例如:
var timerID = setInterval(fontChange,500);以及以后的
clearInterval(timerID);发布于 2013-02-02 21:57:18
我觉得你应该:
var myInterval
on.onclick = function() {
myInterval=setInterval(fontChange, 500);
};
off.onclick = function() {
clearInterval(myInterval);
}; https://stackoverflow.com/questions/14666924
复制相似问题