0

假设我有几个按钮,当它们被点击时,它们会触发某些 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);      
});

有人可以帮忙吗?

非常感激

4

2 回答 2

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);      
});
于 2013-08-28T11:08:09.593 回答
1

变量 onehour 和 twohour 是函数的局部变量。如果您在全球范围内声明它们,它应该可以正常工作。

于 2013-08-28T11:10:15.907 回答