私はJavaScript/jQueryにかなり慣れていませんが、背景画像を変更するスクリプトを作成しました。
最初のスクリプト
最初のスクリプトバージョンは正常に動作し、次のことを行います。
- 7秒ごとに実行する関数backgroundChange()を呼び出すsetIntervalタイマーを作成します
- 次の画像のURLを決定します
- 背景画像を設定します
これはうまく機能しますが、問題はWebサイトがライブの場合、接続が遅いと、次のタイマー変更に間に合うように背景画像が読み込まれないことです。
新しいスクリプト
したがって、新しいバージョン:
- 関数backgroundChange()を呼び出して7秒後に実行するsetTimeoutタイマーを作成します
var theTimer = setTimeout(backgroundChange, 7000);
- clearsTimeout(確かにこれを実行する必要はありませんか?)
window.clearTimeout(theTimer);
- 次の画像のURLを決定します
- 画像が読み込まれるまで待機します。
- 次に、背景画像を設定します
- 次に、新しいsetTimeoutタイマーを追加します
$('#testImage').attr('src', imageText).load(function()
{
$('#backgroundTop').fadeIn(timeIn,function()
{
theTimer = setTimeout(backgroundTimer, 7000);
});
});
問題は、タイマーが実行され、.load関数に存在するたびに、タイマーが2倍の回数呼び出されるように見えることです。
誰かが私のコードを修正するのではなく、最初に私の理解が正しいことを確認したいので、私はまだ意図的にコードを投稿していません。
とてもタ。