多个if语句不起作用

时间:2013-09-25 16:36:55

标签: jquery if-statement settimeout

我不明白我在这里做错了什么。我还有其他一些if语句,但只有第一个语句会触发。我想这是因为他们都在同时检查变量,然后功能结束了。这就是为什么我把它全部放在一个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);

1 个答案:

答案 0 :(得分: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);