0

我不明白我在这里做错了什么。我还有其他一些 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);
4

1 回答 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);
于 2013-09-25T16:38:28.307 回答