2

JSFiddleはここにあります...

http://jsfiddle.net/Vd8PJ/10/

わかった。幅の異なる画像を表示する JQuery カルーセルを作成しようとしています。これを実現するために、画像を含む順序付けられていないリストの右側に、シームレスで終わりのないスライドを作成しようとしています。閾値を超えた画像は.beforeプロパティで後ろに置き、永遠に続くようにする予定です。しかし、私には3つの問題があります。

最初の問題は、私のJSがこのように見える場合...

$(document).ready(function() { 
    function gallery () {
    $("#image").animate({"margin-left":"200px"}, 3000);
    }
setInterval(gallery, 3000);
});  

3 秒間待機し、1 回だけ実行されます。一度だけ実行される問題を修正できるかどうかを確認するために周りを見回したところ、これが見つかりました...

setInterval() 関数を 1 回だけ実行する

そして、それを好む他の多くの質問。いつもそれは同じことです。彼らはこのように関数を呼び出しています...

setInterval(gallery(), 3000);

このような代わりに、setIntervalで...

setInterval(gallery, 3000);

だから、私はそれが解決策ではないことを知っています。私の関数にはすでに括弧がなく、正しい方法で呼び出されていることを考慮してください。(おもう。)

したがって、論理的には、次の問題である 3 秒の遅延を修正しようとしました。私はこれを書きました...

$(document).ready(function() { 
    $("#image").animate({"margin-left":"200px"}, 3000);
    function gallery () {
        $("#image").animate({"margin-left":"200px"}, 3000);
    }
    setInterval(gallery, 3000);
});  

ページが読み込まれるとすぐに実行されるようになりましたが、以前は setInterval が 1 回しか実行されていなかったため、2 回発生すると仮定します...

$("#image").animate({"margin-left":"200px"}, 3000);

1 つはロード時に実行され、もう 1 つは setInterval によって「ギャラリー」関数から実行されました。しかし、そうではありません。すぐに実行されますが、発生するのは 1 回だけです。

私の最後の問題は setInterval とは何の関係もありませんが、一石二鳥だと思います。私の順序付けられていないリストの幅は 9,999 ピクセルなので、アニメーションを連続して実行しても、最終的に移動する要素がなくなるということですか?

ありがとうございます!

4

1 に答える 1

2

1回だけ実行されているようです

$("#image").animate({"margin-left":"200px"}, 3000);

関数が初めて実行されるとき、margin-left:200pxはすでに指定された属性に設定されています。

そのため、次回の実行時に、margn-leftプロパティに変更はありません。だから静的に見える

私はあなたが探していると思います

$("#image").animate({"margin-left":"+=200"}, 3000);

+=を使用すると、関数が実行されるたびに提供される値が増加します。

フィドルをチェック

于 2013-07-10T00:04:11.540 に答える