1

間隔を空けて設定した特定のフォルダ内の他の画像にボディの背景をフェードさせたい。setIntervalを実行するスクリプトを取得しましたが、背景画像はまったく変更されません。実際、空白の画像にも変更されません。画像は、script.jsファイル(以下のスクリプトが呼び出されるのと同じファイル)のあるフォルダーにあります。実行するファイルを決定するために単純なランダマイザーを実行しています(ファイルの名前は1,2,3,4.jpgなど)。

画像をプリロードできれば理想的ですが、それは別の問題だと思います。

  $(document).ready(function() {

var image;

function changeImage() {
    image = Math.floor(Math.random() * 2) + 1;
    $("body").css("background-image",image+".jpg");
}

setInterval(changeImage, 3000);
 });
4

3 に答える 3

2

background-imageのプロパティを設定しているようですが、urlを指定していないようです。次のことを試してください。

$("body").css("background-image","url(" + image+ ".jpg)");

または代替案は

image = Math.floor(Math.random() * 2) + 1;
image = "url(" + image + ".jpg)"
$("body").css("background-image",image);
于 2012-10-10T14:05:55.650 に答える
2

jQueryを次のように拡張できます。

$.fn.preload = function() {
    this.each(function(){
        $('<img/>')[0].src = this;
    });
}

これで、次の方法で画像をプリロードできます。

$(['1.jpg','2.jpg','3.jpg','4.jpg']).preload();

背景を変更するコードは次のようになります

  $(document).ready(function() {
    var image;

    function changeImage() {
        image = Math.floor(Math.random() * 2) + 1;
        $("body").css("background-image","url('" + image+ ".jpg')");
     }
   });

setInterval(changeImage, 3000);
于 2012-10-10T14:19:41.177 に答える
0

このjQueryをURLにダブルコットなしで使用し、background-imageの代わりにbackgroundを使用します

image = Math.floor(Math.random() * 2) + 1;
$("body").css({background:"url(" + image  + ".jpg)"})
于 2012-10-10T14:22:56.650 に答える