2017-03-29 121 views
-4

停止的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()函数中的回调函数被触发时。

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

感谢

+1

可以停止与[clearTimeout](http://stackoverflow.com/questions/11123237/how-to-stop-a-timer-function-from-running)的定时器。尽管你的变量[应该可以访问](http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript)。 (谷歌可以提供很大的帮助。) – Ivar

+0

任何人都可以提供反馈,为什么我收到了拒绝投票。是因为它被认为太简单了吗?谢谢 – raison

+0

可能因为答案可以很容易找到。如果你的谷歌“Javascript停止计时器”,你可以很容易地找到如何做到这一点。从另一个问题来做是一个可变范围的问题。这是基本的Javascript(或者一般的基本编程),并且也不是很难找到。 (这个问题的两个部分已经在这个网站上得到解答,所以它也被认为是重复的。 – Ivar

回答

3

移动

var openTimer; 

外设功能,使其全球的。

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

按照上面尼娜肖尔茨的回答,你应该做的:

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

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

     } 
     }); 
}