2011-05-24 70 views
1

我有以下功能:簡化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)" }); 

因爲所有的圖像都除了最後的數值相同的名字,我不能簡化這個?

回答

1

這似乎是顯而易見的,但如果你知道你有多少圖像有,你可以用一個恆定例如更換randomImages.length 5爲了討論,那麼你不需要一個數組所以這將是隻有一行:

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

注:math.ceil會爲那麼好,你不需要一個+1。

1

是的,你可以。請注意,你可能想要定義一個常量而不是僅僅使用魔法數字6,但這是主意。

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

這不要求randomImages數組保持定義嗎?我感覺OP所要求的簡化是消除定義一個數組的需要,其中每個數值的唯一差別就是數字的末尾。 – 2011-05-24 02:38:47

+0

Doh,當然。謝謝。愚蠢的疏忽......你不需要'randomImages.length',你只需要'6'。編輯... – Amadan 2011-05-24 03:48:04