我正在制作一个使用setTimeout和的简单淡入/淡出循环动画clearTimeout。到目前为止,这是我的代码:
HTML:
<p><span>loading...</span></p>
<a href="#" id="btn">STOP</a>
Javascript(jQuery1.9.1):
var _timer;
var _timerArr = [];
var loaderBlink = function() {
    $('p').find('span').fadeTo(200,.4).fadeTo(200,1,function() {
        _timer = setTimeout(function() { loaderBlink() }, 200);
        _timerArr.push(_timer);
        //console.log('loading...');
    });
};
var clearTimer = function() {
    $.each(_timerArr, function(i,val) {
        clearTimeout(val);
        console.log(val);
    });
    $('#btn').remove();
    $('p').fadeOut('fast');
    return false;
};
$('#btn').on('click', function() {
    clearTimer();
});
loaderBlink();
演示:http: //jsfiddle.net/nori2tae/MW9E8/
问题是,即使我将所有计时器推入一个数组以便之后通过单击停止按钮将它们全部清除,有时计时器也不会停止,只会继续运行。
可能我不完全理解setTimeoutand的概念clearTimeout。我需要一些解决方案并帮助理解这两个功能。