2017-03-29 174 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); 
      } 

     } 
     }); 
}