本文介绍了setInterval和setTimeout的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
var myTimer = setInterval(function(){
var eleID = '';
var delayTimer = '';
$('#hp-fcas li').each(function(i) {
eleID = $(this).attr('id');
delayedTrigger( $('#'+eleID + ' a'), 7000*i);
});
function delayedTrigger(elem, delay){
setTimeout(function(){
$(elem).trigger('click');
}, delay );
}
}, 21000);
$(".play").click(function(){
clearTimeout();
clearInterval(myTimer);
});
第一次间隔是21秒,
第二个间隔是3个7秒实例(我想要的).
the 2nd interval is 3 7-second instances (what I want).
当我单击.play时,我试图清除以上所有内容.
I'm trying to clear all of the above when I click .play.
有帮助吗?
推荐答案
clearTimeout
需要传递一个超时ID,该ID由setTimeout
返回.
clearTimeout
needs to be passed a timeout ID, this ID is returned by setTimeout
.
clearTimeout();
不执行任何操作.您可以将返回值从setTimeout
推入数组,然后遍历它们,然后运行clearTimeout
.
clearTimeout();
does nothing. You can push the return values from setTimeout
into an array, and then loop through them, and run clearTimeout
.
var timeouts = []; // Array of timeouts
var myTimer = setInterval(function(){
var eleID = '';
var delayTimer = '';
$('#hp-fcas li').each(function(i) {
eleID = $(this).attr('id');
delayedTrigger( $('#'+eleID + ' a'), 7000*i);
});
function delayedTrigger(elem, delay){
timeouts.push(setTimeout(function(){ // push onto array
$(elem).trigger('click');
}, delay));
}
}, 21000);
$(".play").click(function(){
$.each(timeouts, function(i,v){ // clear all timeouts
clearTimeout(v);
});
clearInterval(myTimer);
});
这篇关于setInterval和setTimeout的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!