javascript - 清除间隔按钮后 5 秒内再次设置间隔

标签 javascript jquery setinterval clearinterval

我正在做一个自动循环幻灯片的内容 slider (通过使用 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); 
}

最佳答案

将您的 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
}

关于javascript - 清除间隔按钮后 5 秒内再次设置间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9029392/

相关文章:

单个 setInterval 方法中不同 DOM 事件的 Javascript 计时器

javascript - 如何保存下载的更新以便稍后安装?

javascript - 获取按属性分组的动态复选框组

javascript - 为什么 clearInterval 对我的代码不起作用?

javascript - setInterval 只能执行一次

javascript - 在 angular.js 的一项服务中重用方法

javascript - 何时在 AngularJS 中使用 $injector

javascript - 使用 Highmaps,为什么我的 jQuery 淡入淡出中的回调发生在淡入淡出完成之前?

javascript - 固定 fancybox 在屏幕上的位置?滚动真实?

javascript - 在 JavaScript 中以预定义的不规则间隔调用函数