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); });