3

サイトでスポンサー ロゴを表示/非表示にしようとしています。私はちょっと近づいていると思いますが、頭を叩いた後、助けを求める時が来たと判断しました. これが私のコードです:

var sponsors = ["prointec","pequigraf"];
for (var i = 0; i < sponsors.length; i++){
    setTimeout($(document.getElementById(sponsors[i])).slideToggle("slow", "swing"), 1000);
    setTimeout($(document.getElementById(sponsors[i])).slideToggle("slow", "swing"), 10000 * (i + 1));
}

基本的には (10 秒後に) 次々に表示されるはずですが、代わりに一度にすべて実行されます。ヒントはありますか?前もって感謝します!

4

2 に答える 2

2

適切なコードフォーマットを実行できることを確認するためだけに、これをコメントではなく回答として投稿しています。

rpamely のコードは必要なもののように見えますが、かなり単純化することができます。2 つのスポンサー ID の前に「#」を付けるだけで、すべてのdocument.getElementById()呼び出しを削除できます。

var sponsors = [ "#prointec","#pequigraf" ];

var i = 0;

$(sponsors[0]).show();
$(sponsors[1]).hide();

var toggleSponsor = function() {
    $(sponsors[i]).hide();

    i = (i + 1) % sponsors.length;
    $(sponsors[i]).show();

    setTimeout(toggleSponsor, 10000);
};

setTimeout(toggleSponsor, 10000);
于 2013-03-17T03:55:41.547 に答える
1

タイムアウトに関数参照を与える必要があります。また、タイムアウトをネストする必要があります。JavaScript を書くときは、非同期で考えるようにしてください。

私はこれをテストしていませんが、これは私が思いついたものです。また、10 秒は 1000 ミリ秒ではなく 10,000 ミリ秒であることにも注意してください。

var sponsors = ["prointec","pequigraf"];

var i = 0;

$(document.getElementById(sponsors[0])).show();
$(document.getElementById(sponsors[1])).hide();

var toggleSponsor = function() {
    $(document.getElementById(sponsors[i])).hide();

    i = (i + 1) % sponsors.length;
    $(document.getElementById(sponsors[i])).show();

    setTimeout(toggleSponsor, 10000);
};

setTimeout(toggleSponsor, 10000);
于 2013-03-17T03:31:46.750 に答える