单击按钮时,ClearInterval未定义

时间:2013-08-28 11:07:10

标签: javascript jquery setinterval clearinterval

假设我有几个按钮,当它们被点击时会触发某个setInterval,但是当我点击不同的按钮时,前一个setInterval没有清除或者说它是未定义的。

示例:

$("#button1").click(function () {

        var url = "xxx";
        var min = "yyy";

        getGraphCredentials3(min,url);

        var onehour = setInterval(function () {
                getGraphCredentials3(min,url);
        }, 5000);


        clearInterval(twohour);  

});


$("#button2").click(function () {

        var url = "zzz";
        var min = "uuu";

        getGraphCredentials3(min,url);

        var twohour = setInterval(function () {
                getGraphCredentials3(min,url);
        }, 5000);


        clearInterval(onehour);      
});

任何人都可以帮忙吗?

非常感谢

2 个答案:

答案 0 :(得分:5)

onehour和twohour函数的范围是它们被声明的函数,因此它们在其他回调中是不可见的。

您必须在常见范围内声明变量。这样做:

var onehour, twohour;
$("#button1").click(function () {

        var url = "xxx";
        var min = "yyy";

        getGraphCredentials3(min,url);

        onehour = setInterval(function () {
                getGraphCredentials3(min,url);
        }, 5000);


        clearInterval(twohour);  

});


$("#button2").click(function () {

        var url = "zzz";
        var min = "uuu";

        getGraphCredentials3(min,url);

        twohour = setInterval(function () {
                getGraphCredentials3(min,url);
        }, 5000);


        clearInterval(onehour);      
});

答案 1 :(得分:1)

变量onehour和twohour是函数的本地。如果你在全局声明它们,它应该可以正常工作。