функция в setInterval () выполняется без задержки - PullRequest
4 голосов
/ 22 октября 2011

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

$(document).ready(function() {

  setInterval(change(), 99999999);

  function change() {
    $('#slideshow img').eq(0).removeClass('show');

  }

});

Я тестирую ее в jsfiddle .

Ответы [ 4 ]

10 голосов
/ 22 октября 2011

http://jsfiddle.net/wWHux/3/

Вы вызвали функцию немедленно, вместо того, чтобы передать ее setInterval.

setInterval( change, 1500 ) - передает функцию change в setInterval

setInterval( change(), 1500 ) - вызывает функцию change и передает результат (undefined) в setInterval

4 голосов
/ 22 октября 2011

Если у вас есть setInterval(change(), 99999999);, вы немедленно вызываете функцию change() и передаете возвращаемое значение этой функции в функцию setInterval(). Вам нужно отложить выполнение change(), заключив его в функцию.

setInterval(function() { change() }, 9999999);

Или вы можете отложить это, передав setInterval() только саму функцию, не вызывая ее.

setInterval(change, 9999999);

Либо работает. Лично я нахожу первое более ясным о намерениях, чем второе.

1 голос
/ 22 октября 2011

Изменение setInterval(change(), 99999999); на setInterval(change, 99999999);

И 99999999 означает 99999999 миллисекунд, как вы знаете.

1 голос
/ 22 октября 2011

У вас есть setInterval(change(), 99999999);, и оно должно быть setInterval(change, 99999999);. Смотрите документацию по setInterval / setTimeout почему. :)

Распространенная ошибка, случается со мной все время. :)

...