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秒的实例(我想要的)。
当我点击.play时,我正试图清除以上所有内容。
有帮助吗?
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); });