0

Foundation のモーダル ウィンドウを使用していますが、ウィンドウを開くと 3 秒ごとにアラートが表示されます。ポイントは、モーダルウィンドウを閉じるときの間隔を無効にしたいということです。次のことを試しましたが、clearInterval関数が機能していないようです(モーダルが閉じられた後もアラートが生成されます):

$(document).on('opened', '[data-reveal]', function () {
            var interval = setInterval(function(){alert("O.K.");}, 3000);
        if($("div#automate_message").height() > 100) { interval; }
});
        $(document).on('close', '[data-reveal]', function () {
        clearInterval(interval);
});
4

2 に答える 2

2

あなたのコードでは、しようとしているときに変数intervalがスコープ外ですclearInterval

したがって、最初に変数をintervalグローバルに宣言します。

と呼ばれるグローバルに宣言された変数: GLOBAL VARIABLES - その値は、プログラム全体でどこからでもアクセスおよび変更できます。

これを試して:

var interval = null;
$(document).on('opened', '[data-reveal]', function () {
    interval = setInterval(function(){alert("O.K.");}, 3000);
    if($("div#automate_message").height() > 100) { interval; }
});

$(document).on('close', '[data-reveal]', function () {
    clearInterval(interval);
});
于 2014-06-11T08:15:28.703 に答える
1

interval変数をグローバル変数、つまりグローバル スコープとして初期化し、どこからでもアクセスできるようにします。

//global scope
var interval = null;

$(document).on('opened', '[data-reveal]', function () {

        //local scope

        interval = setInterval(function(){alert("O.K.");}, 3000);
        if($("div#automate_message").height() > 100) { interval; }
});

$(document).on('close', '[data-reveal]', function () {
        clearInterval(interval);
});
于 2014-06-11T08:15:39.987 に答える