2010-02-21 11 views
8

मैं अपने साइट बॉडी पर एक संख्या के आधार पर एक यादृच्छिक पृष्ठभूमि उत्पन्न करने के लिए jQuery प्राप्त करने का प्रयास कर रहा हूं। इसलिए मैं इसे मुख्य 1.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

यह देखने में बहुत भ्रमित है कि आप क्या करने की कोशिश कर रहे हैं। अभी आप शरीर को दो बार छुपा रहे हैं, फिर गलत तरीके से एक सीएसएस नियम जोड़ रहे हैं, फिर शरीर दिखा रहे हैं। तुम सिर्फ एक यादृच्छिक पृष्ठभूमि सेट करना चाहते हैं, तो ऐसा करते हैं:

$(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)'}); 
}); 

आप दो divs एक बेतरतीब ढंग से जोड़ सकते हैं और दिखाने के लिए इच्छुक रहे हैं, तो ऐसा करते हैं:

$(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 वापस कर सकता है, छत का उपयोग करके() परिणामस्वरूप 0 दे सकता है। इसके बजाय मंजिल का उपयोग करें: 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 + ")"); 
}); 
संबंधित मुद्दे