2013-09-25 184 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。謝謝 –