2010-02-21 10 views
8

jQuery에서 숫자를 기반으로하는 내 사이트 본문에 임의의 배경을 생성하려고합니다. 그래서 main1.jpg 또는 main2.jpg를 생성하여 배경으로 몸에 던지려고합니다.jQuery 난수가 작동하지 않습니다.

어떤 이유로 인해 main2.jpg 만 생성됩니다.

$(document).ready(function(){ 

    $("body").css({'background' : 'url(images/main1.jpg)'}).hide(); 
    $("body").css({'background' : 'url(images/main2.jpg)'}).hide(); 

    var randomNum = Math.floor(Math.random()*2); /* Pick random number */ 

    $("body").css({'background' : 'url(images/main:eq(' + randomNum + ').jpg)'}).show(); /* Select div with random number */ 

}); 

감사합니다, 웨이드

답변

19

무엇을하려고하는지 매우 혼란 스럽습니다. 지금 당신은 시체를 두 번 숨긴 다음 css 규칙을 잘못 추가 한 다음 시체를 보여줍니다. 당신은 그냥 임의의 배경을 설정하려면 다음을 수행

당신이 무작위로 하나를 두 divs를 추가하고 표시하고자하는 경우
$(document).ready(function(){ 
    var randomNum = Math.ceil(Math.random()*2); /* Pick random number between 1 and 2 */ 
    $("body").css({'background' : 'url(images/main' + randomNum + '.jpg)'}); 
}); 

는 다음을 수행

$(document).ready(function(){ 
    /* Pick random number between 1 and 2 */ 
    var randomNum = Math.ceil(Math.random()*2); 
    $.each([1,2], function(){ 
     var $div = $('<div class="background" style="background-image: url(images/main' + this + '.jpg)"></div>'); 
     if(this !== randomNum) $div.hide(); 
     $div.appendTo(document.body); 
    }); 
}) 
+1

감사합니다. jQuery를 잘 알 수 있습니다. –

+2

@Wade, 걱정 마세요! 죄송합니다. 모욕적 인 말을하면, 당신의 질문을 제기 할 수있는 곳입니다! 당신의 솔루션과 다른 점에 대해 질문이 있습니까? –

+2

Math.random()은 0을 반환 할 수 있기 때문에 ceil()을 사용하면 0이 결과로 나타날 수 있습니다. 대신 floor를 사용하십시오 : Math.floor ((Math.random() * 2) +1) – Meglio

4

는 그 몸의 배경을 설정하면 첫 덮어에 대한 첫 번째 호출이다하고있어 그 이유는 여기에 내 코드입니다. 또한 단지 당신이 몸 배경에 사용하는 하나 개의 이미지를 미리로드에이를 조정할 수

// 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 s = "hello"; 
s = "world"; 
alert(s); // world 

당신이 원하는 것은 더 같은 것입니다 : 그것은 일에 해당합니다.

var img = images[Math.floor(Math.random() * images.length)]; 
var preload = $("<img>").attr("src", img); 
$(function() { 
    $("body").css("background", "url(" + img + ")"); 
}); 
관련 문제