从另一个函数停止JavaScript计时器

时间:2017-03-29 09:07:38

标签: javascript

我有以下Javascript代码

 function scrollOpenTimed() {
            var openTimer = setTimeout(function(){ scrollOpen(); }, 3000);
        }



function a() {
      var _ouibounce = ouibounce(document.getElementById('modal'), {
        aggressive: true,
        timer: 0,
        callback: function() { 
        console.log('ouibounce fired!'); 
        // cancel the openTimer
        }
      });
}

目前我在3秒后触发了scrollOpen。​​

我想取消定时器并停止触发scrollOpen函数当触发函数a()/ ouibounce()函数中的回调函数时。

任何想法如何做到这一点表示赞赏。

由于

5 个答案:

答案 0 :(得分:3)

移动

var openTimer;

在函数之外使其成为全局。

答案 1 :(得分:1)

按照上面的Nina Scholz的回答,你应该这样做:

var openTimer;

function scrollOpenTimed() {
  openTimer = setTimeout(function(){ scrollOpen(); }, 3000);
}

function a() {
  var _ouibounce = ouibounce(document.getElementById('modal'), {
    aggressive: true,
    timer: 0,
    callback: function() { 
    console.log('ouibounce fired!'); 
      // cancel the openTimer
      clearTimeout(openTimer);
    }
  });
}

答案 2 :(得分:1)

您需要声明一个可公开访问的变量来保存计时器的实例。



<script>
 var openTimer = null;
 function startTimer() {
    if(openTimer == null)
    {
      openTimer = setTimeout(function(){console.log("I'll beprinted after 10 seconds") }, 10000);
     }
}

function stopTimer(){
  clearTimeout(openTimer);
  openTimer = null;
}
</script>

<button onClick="startTimer();">Start Timer</button>
<br/>
<button onClick="stopTimer();">Stop Timer</button>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

试试这个:

var openTimer;

function scrollOpenTimed() {
  openTimer = setTimeout(function() {
    scrollOpen();
  }, 3000);
}



function a() {
  var _ouibounce = ouibounce(document.getElementById('modal'), {
    aggressive: true,
    timer: 0,
    callback: function() {
      console.log('ouibounce fired!');
      clearTimeout(openTimer);
    }
  });
}

答案 4 :(得分:0)

var openTimer = null;

 function scrollOpenTimed() {
     openTimer = setTimeout(function(){ scrollOpen(); }, 3000);
 }



function a() {
      var _ouibounce = ouibounce(document.getElementById('modal'), {
        aggressive: true,
        timer: 0,
        callback: function() { 
        console.log('ouibounce fired!'); 
            if(openTimer ){
               clearTimeout(openTimer );
            }

        }
      });
}