Изменение классов элементов с помощью jQuery с использованием условных выражений и таймера

0

По сути, у меня есть три разных класса, которые можно применить к элементу на моей странице. Каждый из них имеет другое фоновое изображение, и я хочу использовать JQuery, чтобы узнать, какой класс в данный момент существует, и удалить этот класс и заменить его другим. а затем установите для него таймер, чтобы запустить функцию каждые 5000 мс, это то, что мой код выглядит

$(document).ready(
    function(){
    var toggleImage = function(){
        if($(".home").hasClass("home1")){
            $(".home").removeClass("home1").addClass("home2")       }
        elseif($(".home").hasClass("home2")){
            $(".home").removeClass("home2").addClass("home3")
        }
        elseif($(".home").hasClass("home3")){
            $(".home").removeClass("home3").addClass("home1")
        }

    }

    setInterval(toggleImage(), 5000);​

    });

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

  • 0
    Просто к вашему сведению, вы должны объяснить, какая у вас проблема с вашим кодом. В этом случае ошибка была очевидна, но это не всегда так.
Теги:

2 ответа

3
Лучший ответ

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

Не вызывайте функцию:

setInterval(toggleImage, 5000);​

По крайней мере, в Firefox вы получили бы ошибку времени выполнения:

Ошибка: бесполезный вызов setInterval (отсутствующие цитаты вокруг аргумента?)


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

Вы правы, elseif должно быть else if, else if. Это синтаксическая ошибка, и вы должны были ее увидеть и на консоли.


Узнайте, как отлаживать JavaScript, чтобы найти синтаксис и ошибки времени выполнения самостоятельно.

  • 0
    Код был изменен, чтобы отразить внесенные вами изменения, однако он по-прежнему не переключает классы. Любая идея, что я все еще делаю неправильно. Также спасибо за ваш быстрый ответ.
  • 0
    Посмотрите на консоль. Есть ошибки? Без информации я не могу сказать вам, что может быть не так.
Показать ещё 5 комментариев
1

Вы хотите передать setInterval функцию. Вызов toggleImage() запускает функцию и завершает передачу setInterval результата. Правильный синтаксис должен быть:

setInterval(toggleImage, 5000);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню