点击

时间:2015-11-11 04:27:25

标签: javascript jquery intervals


我遇到了一堵砖墙,似乎无法解决这个问题。 基本上,我正在设置一个Interval(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);

这种方法可以正常工作一段时间,但我正在努力寻找一种方法让下一次弹出窗口被触发时恢复间隔。

你知道我怎么能做到这一点吗?当用户点击“关闭弹出窗口”按钮时,我已经尝试重新启动间隔,但它似乎没有那样工作。

非常感谢,
亚历。

2 个答案:

答案 0 :(得分:0)

问题是当你调用“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);

答案 1 :(得分:0)

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

请参阅此链接http://jsfiddle.net/9La0L6f7/3/或以下代码。

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

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