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

您可以将 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 回答
2

看起来您正在设置背景图像的属性,但没有指定 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 回答
0

您在 url 中使用没有双床的 jQuery,并使用 background-image 的背景

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