我需要在每5秒内调用一个函数,并重置持续时间
I need to call a function in every 5 second with time duration reset
am使用下面的jquery每1秒更改一次中的图像
window.setInterval(function(){
imagechanger();
}, 5000);
自动换碟机工作正常。现在我需要添加下一个按钮。我在下一次单击按钮时调用相同的imagechanger()函数。这也很好
$('body').on('click','#next',function(){
imagechanger();
});
但假设在调用第一个更改并等待4秒后,我按下下一个按钮,当我单击按钮时,图像正在更改,但就在下一秒,另一个更改调用也被触发。
那么我该如何重置时间呢??
要重置间隔,需要将其存储到一个变量中,然后在创建新间隔之前对其调用clearInterval
。试试这个:
// on load
var interval = setInterval(imagechanger, 5000);
$('body').on('click', '#next', function() {
clearInterval(interval); // clear current interval
imagechanger(); // call instantly
interval = setInterval(imagechanger, 5000); // create new interval
});
我的解决方案是制作一个简单的Timer对象并让它处理间隔。
http://jsfiddle.net/fk5cnvc2/
var Timer = function (interval) {
var me = this;
var timeout = null;
me.interval = interval;
me.tick = function () {};
me.reset = function () {
if (timeout != null) {
clearTimeout(timeout);
}
timeout = setTimeout(function () {
me.tick();
timeout = null;
me.reset();
}, me.interval);
}
me.start = function () {
me.reset();
}
me.stop = function () {
clearTimeout(timeout);
}
}
function addResult() {
$('#results').append("<div>Tick!</div>");
}
var myTimer = new Timer(5000);
myTimer.tick = addResult;
$('#button').on('click', function() {
addResult();
myTimer.reset();
});
myTimer.start();
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 我可以在json对象中添加一个函数吗
- Javascript使函数一个接一个地执行
- 是JavaScript中的函数一个对象
- 两个几乎相等的jQuery函数;一个适用于IE,一个不适用于IE
- 两个Javascript函数一个window.onload=Custom.init;和一个window.onload=f
- 使javascript加载函数一个接一个地执行
- 如何通过两个嵌套的匿名函数(一个带有超时的事件处理程序)传递变量
- 为什么我不能让两个jQuery函数一个在另一个里面呢?
- 给函数一个变量名,而不是它的值
- 如何使用嵌入函数(一个滚动页由Pete - peachananr)
- 是否有可能给JavaScript函数一个类型/类?
- 确保两个函数一个接一个地执行,其中第一个函数内部有一个异步调用
- 两个不同的ajax函数一个接一个调用返回相同的值
- jQuery第一次更改函数一个工作
- 给这个函数一个id
- 如何给回调函数一个值一个变量在特定时刻
- 使用回调使两个函数一个接一个地运行
- 两个函数(一个用php)是否可以用“;onclick”;
- 两个几乎相同的函数.一个函数用Queue进行排队.Jquery效果在queued函数上不起作用.为什么