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秒的实例(我想要的)。
当我点击.play时,我正试图清除以上所有内容。
任何帮助?
答案 0 :(得分:4)
clearTimeout
需要传递超时ID,此ID由setTimeout
返回。
clearTimeout();
什么也没做。您可以将返回值从setTimeout
推送到数组中,然后遍历它们,然后运行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);
});