我有以下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()函数中的回调函数时。
任何想法如何做到这一点表示赞赏。
由于
答案 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;
答案 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 );
}
}
});
}