2011-04-10 62 views
1

我是Stack Overflow的新手,所以如果我完全做了一些我不應該做的事情,請讓我知道,這樣我就可以學習了。如果在setInterval中的語句只能工作一次

無論如何!代碼:

$(document).ready(function() {  
    var imgWidth = $(".window").width(); 
    var imgSize = $(".image_reel img").size(); 
    var imgReelWidth = imgWidth * imgSize; 


    $(".image_reel").css({ 
     width: imgReelWidth}); 

    var num = 960; 
    var numImgs = $('div.image_reel img').length; 
    var currentSlide = 0; 

    setInterval(function() {  
     currentSlide++; 

     if (currentSlide != numImgs) { 
      $(".image_reel").animate({ 
       left: -num 
      }, 1000); 
     } 
     else { 
      var setWidth = numImgs - 1; 
      var newSlideNum = num * setWidth; 
      $(".image_reel").animate({ 
       left: newSlideNum 
      }, 1000); 
      currentSlide = 0;  
     } 
    }, 2000); 
}); 

這段代碼是應該做的(或至少我認爲這是...)是一種通過if語句和2秒,它將循環後檢查「當前幻燈片「等於圖像的數量。現在,我使用alert函數進行了檢查,看看所有的數字是否都是正確的,但是由於某種原因,滑塊只能工作一次,就是這樣。任何想法爲什麼?

在此先感謝你們。

+0

只是作出適當的變量全球的:'window.numImgs = $( 'div.image_reel IMG')長;'和'窗口。 currentSlide = 0;否則就像Blender所說的那樣,它們是匿名'就緒'函數的局部變量。 – 2011-04-10 14:51:46

+0

@ShadowWizard:他們是局部變量是有幫助的,沒有問題(歡呼關閉!);他們沒有被自動更新可能會有問題。 (或者,封閉函數是否匿名是否有區別?) – 2011-04-10 16:14:05

+0

@Tomalak好點,因爲'setInterval'函數位於聲明的函數內部,它應該能夠識別這些局部變量。哦,好吧.. :) – 2011-04-10 17:29:14

回答

0

這可能是你的問題:

var numImgs = $('div.image_reel img').length; 

這個擁有圖像的數量它叫,不叫它每一次的時刻。在你的代碼替換numImgs$('div.image_reel img').length,看看它的工作原理:

$(document).ready(function() { 
    var imgWidth = $(".window").width(); 
    var imgSize = $(".image_reel img").size(); 

    $(".image_reel").css('width', imgWidth * imgSize); 

    var num = 960; 
    var currentSlide = 0; 
    var setWidth = 0; 
    var newSlideNum = 0; 

    setInterval(function() { 
     currentSlide++; 

     if (currentSlide < $('div.image_reel img').length) { 
      $(".image_reel").animate({left: -num}, 1000); 
     } else { 
      setWidth = numImgs - 1; 
      newSlideNum = num * setWidth; 
      $(".image_reel").animate({left: newSlideNum}, 1000); 
      currentSlide = 0; 
     } 
    }, 2000); 
}); 
+0

謝謝你,但它沒有做到這一點,它仍然旋轉一次,它停止。奇怪的是,「CurrentSlide」的計數仍然在增加,當它達到相同的數量時,它會旋轉回第一張幻燈片,但由於它不旋轉,它會旋轉至空白點。 – Majed 2011-04-10 14:33:17

+0

這可能是一個可變的問題。你在函數中聲明瞭'newSlideNum',但是這個函數被多次調用。這意味着這些變量會丟失。我重新在全球範圍內宣佈他們,所以看看是否有幫助。 – Blender 2011-04-10 14:40:54

+0

不幸的是,這也沒有幫助。這阻止了滑塊一起工作。 – Majed 2011-04-10 14:54:58