2016-01-16 4 views
0

У меня есть этот фрагмент кода, который изначально запускает интервал. Затем, нажав кнопку, я хочу, чтобы этот интервал был остановлен/очищен, подождите X секунд, а затем снова запустите интервал.Начальный интервал через таймаут

Этот код начинается интервал и работает отлично:

var timeout = undefined; 
var interval = setInterval(bgScroll, timeBetweenSwap); 

Тогда я хочу, интервал должен быть остановлен, когда я нажимаю кнопку, пусть подождать X секунд и начать снова (конечно, нажав на кнопку еще раз необходимо сбросить это количество секунд)

$(document).on('click', '.bgscroller a', function(){ 
    clearInterval(interval); 
    clearTimeout(timeout); 

    var timeout = setTimeout(function(){ 
     var interval = setInterval(bgScroll, timeBetweenSwap); 
    }, delayAfterClick); 
}); 

Теперь, когда я нажимаю кнопку, несколько раз сходит с ума и складывается. Я бы предложил его очистить ... любой совет, как я должен это исправить?

С наилучшими пожеланиями, Нараян

ответ

2

Короче говоря, удалить последние два var заявления. Сделать это timeout = и interval = вместо var timeout = и var interval =.

Ваш код действительно близко - похоже, что вы shadowingtimeout и interval переменные на последних нескольких строках.

Это немного, что это не так:

var timeout = setTimeout(function(){ 
    var interval = setInterval(bgScroll, timeBetweenSwap); 
}, delayAfterClick); 

Он должен выглядеть следующим образом (очень похоже):

timeout = setTimeout(function(){ 
    interval = setInterval(bgScroll, timeBetweenSwap); 
}, delayAfterClick); 

Обратите внимание, что мы удалили var заявления. Это использует те же переменные timeout и interval, как указано выше, вместо того, чтобы создавать новые переменные, которые имеют одинаковые имена.

+1

1+ Для упоминания затенения –

+0

Спасибо вам большое Эван ..! Вы не представляете, сколько времени я потратил на поиски ответов :( – Narayan

 Смежные вопросы

  • Нет связанных вопросов^_^