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 に答える