Несколько, если операторы не работают

0

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

var slide=1;
    alert(slide);
        setTimeout(function(){
            if (slide == 1){
                slide = '2';
                alert(slide);
                $('img.slidephoto').attr('src',"images/slide2.png");
            }
            else if (slide == 2){
                slide = '3';
                alert(slide);
                $('img.slidephoto').attr('src',"images/slide3.png");

            }
            }, 1000);
Теги:
if-statement
settimeout

1 ответ

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

Необходимо использовать setInterval() для выполнения функции с регулярным интервалом, setTimeout() выполняет функцию только один раз

var slide = 1;
alert(slide);
setInterval(function () {
    if (slide == 1) {
        slide = '2';
        alert(slide);
        $('img.slidephoto').attr('src', "images/slide2.png");
    } else if (slide == 2) {
        slide = '3';
        alert(slide);
        $('img.slidephoto').attr('src', "images/slide3.png");

    }
}, 1000);

Его можно лучше написать

var slide = 1;
setInterval(function () {
    slide++;
    $('img.slidephoto').attr('src', "images/slide" + slide + ".png");
    //reset the value to 1 on upper bound
    // ex: slide = slide > 3 ? 0: slide; if there are maximum of 3 images like slide1.png, slide2.pnd and slide3.png
}, 1000);
  • 0
    slide = 3 здесь никогда не побеждает.
  • 0
    @ Undefined Я думаю, что есть больше условий .... просто редактирование лучшего исправления
Показать ещё 1 комментарий

Ещё вопросы

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