2011-05-24 4 views
1

Je la fonction suivante:Simplifier la fonction jQuery

var randomImages = ["bgr1","bgr2","bgr3","bgr4","bgr5","bgr6"]; 
var rndNum = Math.floor(Math.random() * randomImages.length); 
$(".myDiv").css({ background: "url(/images/" + randomImages[rndNum] + ".gif)" }); 

Puisque toutes les images ont le même nom, sauf la dernière valeur numérique, je ne peux pas simplifier?

Répondre

1

Cela peut sembler évident, mais si vous savez combien d'images que vous avez, vous pouvez remplacer randomImages.length avec par exemple constante 5, pour des arguments, alors vous ne avez pas besoin d'un tableau de sorte qu'il serait juste une ligne:

$(".myDiv").css({ background: "url(/images/bgr" + Math.ceil(Math.random() * 5) + ".gif)" }); 

Note: Math.ceil serait mieux que vous ne avez pas besoin +1.

1

Oui, vous pouvez. Notez que vous pourriez vouloir définir une constante plutôt que d'utiliser simplement le nombre magique 6, mais c'est l'idée.

var rndNum = Math.floor(Math.random() * 6) + 1; 
$(".myDiv").css({ background: "url(/images/bgr" + rndNum + ".gif)" }); 
3
var numImages = 6; 
var rndNum = Math.floor(Math.random() * numImages) + 1; 
$(".myDiv").css({ background: "url(/images/bgr" + rndNum + ".gif)" }); 
+0

Cela ne nécessite-t-il pas que le tableau randomImages reste défini? J'ai l'impression que la simplification recherchée par le PO est d'éliminer la nécessité de définir un tableau où la seule différence dans chaque valeur est le nombre à la fin. –

+0

Doh, bien sûr. Merci. Supervision stupide ... Vous n'avez pas besoin de 'randomImages.length', vous avez juste besoin de' 6'. Modification ... – Amadan