2013-09-25 119 views
0

我不明白我在这里做错了什么。我有一些其他的陈述,但只有第一个会发射。我想这是因为他们都在同一时间检查变量,然后功能结束。这就是为什么我把它全部放在setTimeout中,这样它会不断调用这个函数来检查数字是否发生了变化。我该如何做到这一点?多个if语句不起作用

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

的一个问题是,串'2'不等于整数2.当你设置'slide ='2';'时,不会触发'else if(slide == 2)'。 –

回答

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'永远不会在这里获胜。 – undefined

+0

@undefined我认为有更多的条件....只是编辑更好的修复 –

+0

完美。我完全忘记了setInterval。谢谢 –