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

clearInterval不工作
EN

Stack Overflow用户
提问于 2012-01-20 10:01:33
回答 5查看 3.8K关注 0票数 0

我的clearInterval有问题,它不能停止我的setInterval,下面是代码:

代码语言:javascript
复制
$(".auto-check").click(function(){
    if($('input[name=autorefresh]').is(':checked') == true){
        var intervalId = setInterval(load,4000);

    }
    else{
        alert("Auto Refresh is off");
        clearInterval(intervalId);
    }

}); 

谁知道,问题出在哪里?

EN

回答 5

Stack Overflow用户

发布于 2012-01-20 10:13:09

为了便于讨论,另一种使用jQuery .data()的方法

代码语言:javascript
复制
$(".auto-check").click(function(){
    var elem = $('input[name=autorefresh]'
    if(elem.is(':checked')){
        elem.data("interval-id", setInterval(load,4000));
    }
    else{
        alert("Auto Refresh is off");
        clearInterval(elem.data("interval-id"));
        elem.removeData("interval-id");
    }
}); 
票数 3
EN

Stack Overflow用户

发布于 2012-01-20 10:04:55

你需要保留intervalId。在您的示例中,您在本地声明它,并且它在函数之后丢失。在函数外部声明它,在函数内部定义它,然后它才有效。

代码语言:javascript
复制
var intervalId;

$(".auto-check").click(function(){
if($('input[name=autorefresh]').is(':checked') == true){
    intervalId = setInterval(load,4000);

}
else{
    alert("Auto Refresh is off");
    clearInterval(intervalId);
}

}); 
票数 1
EN

Stack Overflow用户

发布于 2012-01-20 10:04:11

试试这个:

代码语言:javascript
复制
var intervalId = null;

$('.auto-check').click(function(){
 if($('input[name=autorefresh]').is(':checked') == true) {
   intervalId = setInterval(load,4000);
 } else {
   alert('Auto Refresh is off');
   clearInterval(intervalId);
 }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8935915

复制
相关文章

相似问题

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