Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要在单击时恢复间隔_Javascript_Jquery_Intervals - Fatal编程技术网

Javascript 需要在单击时恢复间隔

Javascript 需要在单击时恢复间隔,javascript,jquery,intervals,Javascript,Jquery,Intervals,我碰到了一堵砖墙,似乎无法解决这个问题。 基本上,我设置了一个间隔(abcd),因为我希望每次在页面上看到弹出div时都执行一段代码 function confirmationVisibility() { if ($("#box2").is(":visible")) { //If confirmation box is visible console.log('cool beans'); clearInterval(abcd)


我碰到了一堵砖墙,似乎无法解决这个问题。
基本上,我设置了一个间隔(abcd),因为我希望每次在页面上看到弹出div时都执行一段代码

function confirmationVisibility() {  
        if ($("#box2").is(":visible")) {
    //If confirmation box is visible 
          console.log('cool beans');
          clearInterval(abcd); //stop timer
          abcd = null;
        }     
}
var abcd;
abcd = setInterval(confirmationVisibility, 100);
这在一次中效果很好,但我正在努力寻找一种方法,以便在下次触发弹出窗口时恢复间隔

你知道我怎样才能做到这一点吗?我尝试过在用户单击“关闭弹出窗口”按钮时重新启动间隔,但它似乎不是这样工作的

非常感谢,

Alexis。

问题在于,当您调用“clearInterval”时,它会结束由“setInterval”开始的重复

这个怎么样:

function confirmationVisibility() {  
    if ($("#box2").is(":visible")) {
//If confirmation box is visible 
      console.log('cool beans');
      clearInterval(abcd); //stop timer
      abcd = null;
    } 
    else{
      abcd = setInterval(confirmVisibility, 100); 
    }           
}
var abcd;
abcd = setInterval(confirmationVisibility, 100);

问题是,当您调用“clearInterval”时,它会结束由“setInterval”开始的重复

这个怎么样:

function confirmationVisibility() {  
    if ($("#box2").is(":visible")) {
//If confirmation box is visible 
      console.log('cool beans');
      clearInterval(abcd); //stop timer
      abcd = null;
    } 
    else{
      abcd = setInterval(confirmVisibility, 100); 
    }           
}
var abcd;
abcd = setInterval(confirmationVisibility, 100);

当弹出窗口可见时,再次设置间隔

请参阅下面的链接或代码

我设置了另一个间隔来模拟弹出窗口的隐藏

var abcd;

function confirmationVisibility() {  
        if ($("#box2").is(":visible")) {

          alert('cool beans');
          clearInterval(abcd); //stop timer;
        }     
}

abcd = setInterval(confirmationVisibility, 100);

/* closing of popup simulation here */ 
setInterval(function(){
    $("#box2").css("visibility", "hidden");
}, 5000);

/* solution here, declare abcd again */
$("#showbox2").click(function(){
    $("#box2").css("visibility", "visible");
    abcd = setInterval(confirmationVisibility, 100);
});

当弹出窗口可见时,再次设置间隔

请参阅下面的链接或代码

我设置了另一个间隔来模拟弹出窗口的隐藏

var abcd;

function confirmationVisibility() {  
        if ($("#box2").is(":visible")) {

          alert('cool beans');
          clearInterval(abcd); //stop timer;
        }     
}

abcd = setInterval(confirmationVisibility, 100);

/* closing of popup simulation here */ 
setInterval(function(){
    $("#box2").css("visibility", "hidden");
}, 5000);

/* solution here, declare abcd again */
$("#showbox2").click(function(){
    $("#box2").css("visibility", "visible");
    abcd = setInterval(confirmationVisibility, 100);
});

是的,我明白这一点,我正在寻找解决办法。我需要我的代码在每次弹出窗口可见时只触发一次。当它再次隐藏时,计时器可能会重新启动,对吗?是的,我理解这一点,并且正在寻找解决办法。我需要我的代码在每次弹出窗口可见时只触发一次。当它再次隐藏时,计时器可能会重新启动,对吗?“每当页面上出现弹出div时,我都想执行一段代码。”——你能在这里说得更清楚一点吗?是什么导致此弹出窗口显示?为什么不使用触发机制来执行代码?在这种情况下,使用
setInterval
可能无法跟踪弹出窗口的状态。调用
setInterval
应重新启动/恢复计时器。这里有一个小把戏:“每当页面上出现一个弹出div时,我想执行一段代码。”——你能在这里说得更清楚一点吗?是什么导致此弹出窗口显示?为什么不使用触发机制来执行代码?在这种情况下,使用
setInterval
可能无法跟踪弹出窗口的状态。调用
setInterval
应重新启动/恢复计时器。这是一把小提琴: