Ошибка при использовании clearInterval()

Я использую следующий код, чтобы скрыть и показать div каждые 1 сек.

$(document).ready(function(e) {
    var acc = setInterval(function(){
        $("#element").fadeOut(function(){
            setTimeout(function(){
                $("#element").fadeIn()  
            }, 1000)    
        })
    }, 200)
})

$(window).load(function(){
    setTimeout(function(){
        clearInterval(acc);
    }, 10000)
})

clearInterval() не работает должным образом, и я получаю следующую ошибку в Google Chrome:

Uncaught ReferenceError: acc не определен

ДЕМО: http://jsfiddle.net/enve/4GWvM/

2 ответа

Решение

В вашем коде есть проблема с областью действия, вы определили acc переменная локально в контексте обработчика готового документа, и она не определена в контексте load обработчик.

Попробуйте переопределить ваш acc переменная вне .ready Перезвоните.

var _acc = function(callback) {
    return setInterval(callback, 1000);
};

var acc = null;

$(document).ready(function() {
    acc = _acc(function() {
        $("#element").fadeOut(function(){
            setTimeout(function(){
                $("#element").fadeIn()  
            }, 1000)    
        })
    });
});

...
Другие вопросы по тегам