单击按钮时未定义ClearInterval

ClearInterval undefined when button clicked

本文关键字:ClearInterval 未定义 按钮 单击      更新时间:2023-09-26

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

有人能帮忙吗?

非常感谢

一小时和两小时函数的作用域是它们在其中声明的函数,因此它们在其他回调中不可见。

您必须在公共作用域中声明变量。这样做:

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);      
});

变量onehour和twohour是函数的本地变量。如果你在全球范围内声明它们,应该会很好。