2014-01-25 4 views
0

меня играть и показывать кнопки для JSON массива работает отлично:Я не понимаю clearInterval()

JQuery:

$(function() { 
    // Fetch the initial image 
    fetchImage(index); 

    // Event listeners 
    $("#play").click(function() { fetchImage(next); setInterval(function() { fetchImage(next); }, 1000); return false;}); 
    $("#stop").click(function() { clearInterval(xxx); return false;}); 
    $("#prev").click(function() { fetchImage(prev); return false;}); 
    $("#next").click(function() { fetchImage(next); return false;}); 
}); 

ххх предпочтительно должен быть переменной я прочитал. setInterval() возвращает значение. Я читал несколько примеров. Я не добился успеха.

Тестовая страница: http://flamencopeko.net/icons_cogo_16.php

JSON вещь: http://flamencopeko.net/icons_ajax.php

Источник: http://flamencopeko.net/icons_cogo_16.txt

Источник: http://flamencopeko.net/icons_ajax.txt

+1

Вы должны сначала называть свой 'setInterval' так:' var newInterval = setInterval (function() {...} '. Тогда вы можете' clearInterval' с xxx быть 'newInterval' - я узнал отсюда: http: //www.w3schools.com/jsref/met_win_setinterval.asp – ntgCleaner

+3

Мы этого не понимали, но это то, что [MDN] (https://developer.mozilla.org/en-US/docs/Web/API/Window .setInterval) для поиска функций, которые мы не понимаем, поэтому мы можем узнать, как они работают. – adeneo

+0

«Я не понимаю ____» не вопрос. – naomik

ответ

1

Сначала вы должны указать свой интервал, чтобы очистить его. Вот что я хотел бы сделать, чтобы ваш код:

var newInterval; 
    // Event listeners 
    $("#play").click(function() { 
     fetchImage(next); 
     newInterval = setInterval(function() { 
      fetchImage(next); 
     }, 1000); 
     return false; 
    }); 

    $("#stop").click(function() { 
     clearInterval(newInterval); 
     return false; 
    }); 
+1

Лучше назначить var вверху, если пользователь нажимает кнопку остановки перед воспроизведением, тогда 'newInterval' будет не определено –

+0

Большое спасибо.Ваш (самый верхний) код работает как очарование во всех браузерах. Он был так хорошо отформатирован и соответствует моему существующему коду, поэтому я попробовал это первым. –

+0

@carl, это верно, спасибо. Я избавлюсь от нижнего кода. ole нет проблем! Я рад, что смог помочь – ntgCleaner

1

Вы должны назначить setInterval функцию переменной

var interval = setInterval(function() {});

clearInterval(interval)

Я предполагаю, что это то, что вы после этого.

+0

Да. Готово. Работает сейчас. :) –

1

вы дали ответ сами

«он возвращает значение»

так пусть он возвращает псевдоним для значения, так называемый переменным, в идеале вы объявляете его раньше, так оно не бросать неопределенное исключение при попытке очистить его разомкнутый #play не был нажат befre

var xxx; 
... 
$("#play").click(function() { fetchImage(next);xxx=setInterval(function() { fetchImage(next); }, 1000); return false;}); 
... 
clearInterval(xxx)... 
+0

Действительно. Я просто не мог правильно получить синтаксис. Я особенно плохо разбираюсь в jQuery. Проблема решена сейчас. :) –

1

вы когда-нибудь использовал один из этих «принимает ряд» устройств, которые доб грубые пронумерованные листы бумаги?

Возвращаемое значение от setInterval() похоже на «Повторяющийся идентификатор задачи № #».

Вы не должны заботиться, насколько большой номер, но вы должны хранить его где-нибудь, а затем вы можете передать его обратно в clearInterval(), чтобы сообщить системе, какие задачи остановить работу.

+0

Это не совсем то, что я имел в виду под «Я не понимаю ____»,;), но я тоже этого люблю. Благодарю. –