2012-07-31 24 views
1

我正在一個jQuery系統類似手風琴的幻燈片上,問題是當我試圖創建此自動幻燈片,我有:的jQuery JavaScript的循環,順序功能顯示

for (i=1;i<=5;i++) { setInterval(acordeon(i),2000) } 

有了這個函數,我在循環中調用函數acordeon(i),每2000毫秒執行一次,問題是它不會執行所有的操作。

函數參數是要顯示的div的id,例如,如果我有5 divs動畫我只需要調用這個函數與正確的ID和它的動畫就好了,問題來了,當我嘗試動畫:我需要執行第一個acordeon(1) ñacordeon(2) ..... 3,4,最後acordeon(5)

我嘗試了不同的方法,但它只能當我生成隨機整數,並呼籲setInterval

的一切OK thank's我希望 - 肯定 - :)你能幫助我,問候

+0

你能在jsfiddle.net上設置一個樣品供我們玩嗎? – ErikE 2012-07-31 07:50:25

回答

0

使用jQuery .each()功能:

$(div).each(function(){ setInterval(acordeon($(this)),2000)}); 
0

你需要一個回調傳遞給setInterval,而不是要傳遞的手風琴函數的返回值。在for循環試試這個:

setInterval(function(){ acordeon(i) }, 2000) 
+0

Thnk's但沒有作品只有一個動畫時間和之前沒有用於工作的詳細, (I = 1; I <= 5;我++){ 的setInterval(函數(){acordeon(I)},2000) } – Fran 2012-07-31 08:11:17

1

您的問題可能是你所設定的時間間隔「一起」像幾毫秒,因此,所有的5個間隔結束在「同一時間」。嘗試使用:

var divToAnimate = 1; 

setInterval(function(){ 

    acordeon(divToAnimate); 

    divToAnimate = (divToAnimate%5)+1; 

},2000); 

這種方式,你會打電話給手風琴每2秒一個不同的我以動畫來,然後增加,但保持它的範圍1-5

here's a jFiddle

+0

我用這個VAR I = 0 爲(I = 1; I <= 5;我++) { 的setInterval(函數(){ acordeon(ⅰ) I =((i + 1的)%5)+1 },2000) },但只動畫第二個ID,謝謝 – Fran 2012-07-31 08:09:34

+0

不,你沒有t o把for(i = 1; i <= 5; i ++),只用我寫的代碼(var i = 1)。如果你這樣做,它會以非常快的速度從1到5進行迭代,並設置幾乎同時開始的所有間隔,因此它們將會一起結束,不會像你所希望的那樣,你需要做的是使用間隔2000在每個間隔不同的div上調用acordeon(i)。也可以考慮在命令行末尾使用分號 – Onheiron 2012-07-31 08:15:43

+0

我添加了一個工作jfiddle並編輯了增量i =(i%5)+1;如預期的那樣工作 – Onheiron 2012-07-31 08:59:12

0

這對我來說工作得相當好:

for (var i = 1; i < 10; i++) { 
    $('#bullet-' + i).delay(i * 1000 - 1000).fadeIn('fast', function() { 
     var id = this 
     setTimeout (function() {$(id).css('color', 'lightgray');}, 1500); 
    }); 
}