首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clearInterval()不工作

clearInterval()不工作
EN

Stack Overflow用户
提问于 2013-02-02 21:53:52
回答 6查看 158K关注 0票数 52

可能重复: JS -使用setInterval()后如何清除间隔

我有一个函数,它每500毫秒就会改变一些文本的font-family,使用setInterval (我只是为了练习JavaScript)。该函数通过单击" on“按钮来调用,并且应该使用单独的"off”按钮清除间隔。然而,“关闭”按钮实际上并没有清除间隔,它只是继续。我怀疑这与范围有关,但我不知道如何用其他方式编写它。而且,我不想用jQuery来做这件事,因为毕竟,我这么做是为了学习。

代码语言:javascript
复制
<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>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-02 21:56:41

setInterval返回一个ID,然后使用该ID来清除间隔。

代码语言:javascript
复制
var intervalId;
on.onclick = function() {
    if (intervalId) {
        clearInterval(intervalId);
    }
    intervalId = setInterval(fontChange, 500);
};

off.onclick = function() {
    clearInterval(intervalId);
}; 
票数 81
EN

Stack Overflow用户

发布于 2013-02-02 21:56:23

setInterval函数返回一个整数值,它是您创建的"timer实例“的id。

您需要将这个整数值传递给clearInterval

例如:

代码语言:javascript
复制
var timerID = setInterval(fontChange,500);

以及以后的

代码语言:javascript
复制
clearInterval(timerID);
票数 6
EN

Stack Overflow用户

发布于 2013-02-02 21:57:18

我觉得你应该:

代码语言:javascript
复制
var myInterval
on.onclick = function() {
    myInterval=setInterval(fontChange, 500);
};

off.onclick = function() {
    clearInterval(myInterval);
}; 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14666924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档