【问题标题】:setInterval again in 5 seconds after clearInterval button在 clearInterval 按钮后 5 秒内再次 setInterval
【发布时间】:2012-01-27 05:37:14
【问题描述】:

我正在做一个自动循环幻灯片的内容滑块(通过使用setInterval 定期调用“下一个”函数)但是当用户单击上一个/下一个按钮时停止(通过在上一个/上使用 clearInterval下一个按钮)。单击按钮几秒钟后,有没有办法再次使用setInterval

代码:

// start to automatically cycle slides
var cycleTimer = setInterval(function () {
   $scroll.trigger('next');
}, 450);

// set next/previous buttons as clearInterval triggers 
var $stopTriggers = $('img.right').add('img.left'); // left right

// function to stop auto-cycle
function stopCycle() {
   clearInterval(cycleTimer); 
}

【问题讨论】:

    标签: javascript jquery setinterval clearinterval


    【解决方案1】:

    将您的setInterval 放入一个函数中,然后使用setTimeout() 调用该函数。

    setInterval()setTimeout() 之间的区别在于setInterval() 在每个间隔重复调用您的函数,而setTimeout() 在指定的延迟后仅调用您的函数一次。

    在下面的代码中,我添加了一个函数startCycle()。调用该函数以立即启动循环,以便它自动启动并从现有 stopCycle() 函数中设置的超时开始。

    var cycleTimer;
    
    function startCycle() {
       cycleTimer = setInterval(function () {
          $scroll.trigger('next');
       }, 450);
    }
    
    // start to automatically cycle slides
    startCycle();
    
    // set next/previous buttons as clearInterval triggers 
    var $stopTriggers = $('img.right').add('img.left'); // left right
    
    // function to stop auto-cycle
    function stopCycle() {
       clearInterval(cycleTimer);
       setTimeout(startCycle, 5000); // restart after 5 seconds
    }
    

    【讨论】:

    • 不错!有用!谢谢!只需通过添加$stopTriggers.bind('click.cycle', stopCycle);stopCycle() 绑定到$stopTriggers,然后我就可以开始了!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-17
    • 2023-04-11
    • 1970-01-01
    • 2019-04-27
    • 2021-09-10
    相关资源
    最近更新 更多