Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 停止设置间隔并重新启动_Javascript_Jquery - Fatal编程技术网

Javascript 停止设置间隔并重新启动

Javascript 停止设置间隔并重新启动,javascript,jquery,Javascript,Jquery,我正在使用此设置间隔函数: function ticker(){ setInterval(function(){ $('.slide').fadeToggle(); }, 5000); } 我想做的是,当用户使用onclick=“topbartoggle”单击div时,setInterval函数停止,如果再次单击它,setInterval函数再次开始工作: function topbartoggle(){ $('#

我正在使用此设置间隔函数:

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

您知道如何执行此操作吗?

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 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.
//任何其他函数都可以是您想要的任何函数。

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 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();   
}
var shouldTick=true;
变量$slide=$('.slide');
setInterval(函数(){
如果(应勾选){
$slide.fadeToggle();
}
}, 5000);
函数topbartoggle(){
shouldTick=!shouldTick;
$(“#顶栏”).toggleClass(“活动”);
$('.top bar box')。滑动切换();
$('.top bar close').fadeToggle();

}
由于您希望保持相同的延迟,因此保持计时器运行可能是最简单的方法:

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();   
}
var shouldTick=true;
变量$slide=$('.slide');
setInterval(函数(){
如果(应勾选){
$slide.fadeToggle();
}
}, 5000);
函数topbartoggle(){
shouldTick=!shouldTick;
$(“#顶栏”).toggleClass(“活动”);
$('.top bar box')。滑动切换();
$('.top bar close').fadeToggle();
}
要停止股票行情,请使用

清除间隔(tickerID)

要重新启动,只需调用ticker()

编辑:了解您需要切换股票代码,将其添加到切换功能:

if(tickerID != false) {
    clearInterval(tickerID);
    tickerID = false;
} else { ticker(); }
要停止股票行情,请使用

清除间隔(tickerID)

要重新启动,只需调用ticker()

编辑:了解您需要切换股票代码,将其添加到切换功能:

if(tickerID != false) {
    clearInterval(tickerID);
    tickerID = false;
} else { ticker(); }


setInterval
返回值的可能重复项是一个计时器ID,可以传递给
clearInterval
以停止计时器。现在,如果你真的想暂停计时器,也就是说,让它保持延迟,如果你在恢复计时器后没有暂停它,那么这会更难。这怎么可能@minitech?这将是此问题的最佳解决方案。
setInterval
返回值的可能重复项是一个计时器ID,可以传递给
clearInterval
以停止计时器。现在,如果你真的想暂停计时器,也就是说,让它保持延迟,如果你在恢复计时器后没有暂停它,那么这会更难。这怎么可能@minitech?这将是解决此问题的最佳解决方案。但是使用此
onclick
我将丢失已在
topbartogle
函数中执行的其他操作。@codek您可以通过将onclick事件中的一个或多个函数与分开来调用它们;正如您在上面html的编辑版本中所看到的,onclick上调用了两个函数。是的,它会停止它,但单击后如何重新启动它?但是使用此
onclick
我将丢失已在
topbartoggle
函数中执行的其他操作。@codek您可以在onclick事件中调用一个或多个函数,方法是用;正如您在上面html的编辑版本中所看到的,onclick上调用了两个函数。是的,它会停止它,但单击它后如何重新启动它?感谢minitech,但现在,
$slide。fadeToggle
在加载页面时不起作用。它只是停留在那里,不会褪色到另一个分区automatically@codek:您是否在页面中的
.slide
之后包含脚本?如果没有,它需要在
$(文档)中。ready(…)
。我正在将它全部包装在
$(文档)中。ready(…)
但是当我用
onlick=“topbartogle”
单击
div时,我得到:
topbartogle没有定义。
@codek:不要使用内联事件处理程序;只需使用
$(“#topbartoggle”)在外部JavaScript中动态添加它。(尽管如此,您也可以将
函数topbartoggle()
移出
就绪
)感谢minitech,但现在
$slide。fadeToggle
在加载页面时不起作用。它只是停留在那里,不会褪色到另一个分区automatically@codek:您是否在页面中的
.slide
之后包含脚本?如果没有,它需要在
$(文档)中。ready(…)
。我正在将它全部包装在
$(文档)中。ready(…)
但是当我用
onlick=“topbartogle”
单击
div时,我得到:
topbartogle没有定义。
@codek:不要使用内联事件处理程序;只需使用
$(“#topbartoggle”)在外部JavaScript中动态添加它。(不过,您也可以将
函数topbartogle()
移出
ready