Я не понимаю, clearInterval()

У меня есть кнопки play и skip для массива JSON, работающие нормально:

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

4 ответа

Решение

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

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

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

Вам нужно присвоить функцию setInterval переменной

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

clearInterval(interval)

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

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

"возвращает значение"

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

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

Вы когда-нибудь использовали одно из тех устройств "возьми число", которые выдавливали пронумерованные листки бумаги?

Возвращаемое значение из setInterval() это как "Повторяющийся идентификатор задачи №".

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

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