Перемещение карусели с помощью setInterval - PullRequest
1 голос
/ 21 августа 2011

Я пытаюсь использовать следующий код для перемещения элементов карусели каждую секунду:

function moveCarousel(){
        var x = $('.carousel_title.active');
        var next = x.next();
        x.removeClass('active');
        next.addClass('active');

    }

    setInterval(moveCarousel(),1000);

но две вещи кажутся неправильными:

  1. Первый цикл происходит мгновенно
  2. Больше никаких циклов не происходит

Где я ошибся?

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

вы должны удалить скобки в последней строке

function moveCarousel()
{
        var x = $('.carousel_title.active');
        var next = x.next();
        x.removeClass('active');
        next.addClass('active');

    }

    setInterval(moveCarousel,1000);

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

Ваш исходный код передавал undefined (потому что moveCarousel ничего не возвращает) в функцию setInterval - и setInterval принимаетфункция в качестве первого параметра - не undefined

Вы также можете сделать это:

setInterval(function () { moveCarousel(); }, 1000);

, где вы создаете анонимную функцию для вызова moveCarousel.

1 голос
/ 21 августа 2011

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

function moveCarousel(){
    var x = $('.carousel_title.active');
    var next = x.next();
    x.removeClass('active');
    next.addClass('active');

}

setInterval(moveCarousel, 1000); // no () here

В настоящее время вы немедленно вызываете функцию, и она оценивается как:

setInterval(undefined, 1000);

(функция ничего не возвращает, поэтому возвращает undefined), а это не то, что вам нужно.

...