[英]Stop setInterval and start it again
我正在使用此設置間隔功能:
function ticker(){
setInterval(function(){
$('.slide').fadeToggle();
}, 5000);
}
我想做的是,當用戶單擊帶有onclick="topbartoggle"
的div
, setInterval
函數停止,並且如果他再次單擊它,則setInterval
函數將再次開始工作:
function topbartoggle(){
$('#top-bar').toggleClass('active');
$('.top-bar-box').slideToggle();
$('.top-bar-close').fadeToggle();
}
關於如何執行此操作的任何想法?
var tickerID = false;
function ticker(){
tickerID = setInterval(function(){
$('.slide').fadeToggle();
}, 5000);
}
要停止股票行情,請使用
clearInterval(tickerID);
要再次啟動它,只需調用ticker();即可。
編輯:了解您需要切換股票行情,將此添加到您的切換功能:
if(tickerID != false) {
clearInterval(tickerID);
tickerID = false;
} else { ticker(); }
setInterval返回一個可用於停止間隔的句柄,如下所示:
var myInterval = setInterval(function() { // myInterval should be global
something();
}, 5000);
function stopInterval()
{
clearInterval(myInterval);
}
所以你可以這樣:
<div onclick="stopInterval();anyOtherFunction();"></div> //anyOtherFunction could be any function you want.
由於您希望保持相同的延遲,因此最簡單的方法就是保持計時器運行:
var shouldTick = true;
var $slide = $('.slide');
setInterval(function () {
if (shouldTick) {
$slide.fadeToggle();
}
}, 5000);
function topbartoggle() {
shouldTick = !shouldTick;
$('#top-bar').toggleClass('active');
$('.top-bar-box').slideToggle();
$('.top-bar-close').fadeToggle();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.