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