Причиной этого является первый вызов установки фона тела, который перезаписывает первый. Это эквивалентно действию:
var s = "hello";
s = "world";
alert(s); // world
То, что вы хотите, это что-то вроде:
// this can contain as many images as you want
var images = ["images/main1.jpg", "images/main2.jpg"];
// preload. This is optional
var preload = new Array(images.length);
for (var i=0; i<images.length; i++) {
preload[i] = $("<img>").("src", images[i]);
}
// assign one randomly
$(function() {
var img = images[Math.floor(Math.random() * images.length)];
$("body").css("background", "url(" + img + ")");
});
Вы также можете настроить это, чтобы предварительно загрузить только одно изображение, которое вы используете для фона тела.
var img = images[Math.floor(Math.random() * images.length)];
var preload = $("<img>").attr("src", img);
$(function() {
$("body").css("background", "url(" + img + ")");
});