setInterval和setTimeout

时间:2012-02-21 21:37:41

标签: jquery settimeout setinterval

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时,我正试图清除以上所有内容。

任何帮助?

1 个答案:

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