1

私はアコーディオンのようなスライドショーのためにjQueryシステムに取り組んでいます、問題は私がこれのために自動スライドを作成しようとすると、私は持っています:

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

これにより、ループ内で関数acordeon(i)を呼び出して2000ミリ秒ごとに実行します。問題は、すべてが実行されないことです。

関数パラメーターは、表示するdivのIDです。たとえば、アニメーション化するdivが5つある場合は、正しいIDでこの関数を呼び出すだけで、問題なくアニメーション化できます。これをアニメーション化しようとすると、問題が発生します。最初に実行しacordeon(1)、次にacordeon(2)..... 3、4、最後に実行するacordeon(5)

さまざまな方法を試しましたが、ランダムな整数を生成して呼び出した場合にのみ機能しますsetInterval

よろしくお願いします-確かに-:)あなたは私を助けることができます、よろしく

4

4 に答える 4

1

あなたの問題は、これらの間隔を数ミリ秒のように「すべて一緒に」設定しているため、5つの間隔すべてが「同時に」終了する可能性があります。試してみてください:

var divToAnimate = 1;

setInterval(function(){ 

    acordeon(divToAnimate);

    divToAnimate = (divToAnimate%5)+1;

},2000);

このようにして、アニメーション化する別の i を使用して 2 秒ごとにアコーディオンを呼び出し、それをインクリメントしますが、範囲は 1 ~ 5 に保ちます。

ここにjFiddleがあります

于 2012-07-31T07:39:28.333 に答える
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);
    });
}
于 2012-11-24T19:38:37.357 に答える
0

jQuery.each()関数を使用します。

$(div).each(function(){ setInterval(acordeon($(this)),2000)});
于 2012-07-31T07:27:21.357 に答える
0

アコーディオン関数の戻り値を渡す代わりに、コールバックを setInterval に渡す必要があります。forループでこれを試してください:

setInterval( function(){ acordeon(i) }, 2000 )
于 2012-07-31T07:29:24.220 に答える