2015-04-16 13 views
0

我有一些JavaScript,其選擇在1和10之間的隨機數,然後加載高於5.的Javascript隨機數與嵌套If語句

這兩個圖像到img.src =基於該隨機數是否選擇的一個我的代碼:

if ((Math.random() * 10) + 1 > 5) { 
    img.src = '1.jpg'; 
} else { 
    img.src = '2.jpg'; 
} 

這適用於2張圖片,但我現在希望它可以從4張圖片中進行選擇。

我試着用上面的代碼做一個嵌套的if語句,但我意識到我正在運行Math.random的多個實例,它打敗了目的。

於是我試圖定義使用的Math.random在開始一個變量,然後寫一個嵌套如果聲明如下:

var picnumber = Math.floor((Math.random() * 4) + 1); 

if (picnumber = 1){ 
    img.src = '1.jpg'; 
} else { 
    if (picnumber = 2){ 
    img.src = '2.jpg'; 
    } 
    else { 
    if (picnumber = 3){ 
    img.src = '3.jpg'; 
    } 
    else { 
    img.src = '4.jpg'; 
    } 
}} 

我已經超過20倍,運行這段代碼和它保持加載相同的圖像,圖像「1.jpg」。我認爲我在這裏做了一些非常基本的錯誤,我如何確保var picnumber將得到一個隨機數(1,2,3或4),並且正確的圖像將被附加到img.src? (我希望每個圖像有25%的機會被選中)。
預先感謝您的時間!

+4

'VAR NUM = Math.floor(的Math.random()* 4 + 1); img.src = num +「.jpg」;'。保持零件分離;查找或者如果可以根據需要平凡地應用。在任何情況下,「問題」與隨機無關,但必須與'='(賦值)與'=='(相等比較)相關。 – user2864740

+1

http://stackoverflow.com/questions/14369591/if-statement-does-not-work-as-intented-javascript – user2864740

回答

4

您使用的是賦值運算符(=)而不是比較運算符(==)。此外,您還可以使用elseif與這樣你就不需要把一個新的,如果else語句裏面:

var picnumber = Math.floor((Math.random() * 4) + 1); 

if (picnumber == 1){ 
    img.src = '1.jpg'; 
} else if (picnumber == 2) { 
    img.src = '2.jpg'; 
} else if (picnumber == 3) { 
    img.src = '3.jpg'; 
} else { 
    img.src = '4.jpg'; 
} 
+0

啊謝謝@ alejandro酒吧:)這是有道理的!快速的問題,如果我想擴大圖片的數量說,200,這種方法會導致加載時間緩慢?或者應用程序只加載一張圖片(隨機選擇的圖片) – Emily

1

試試這個:

var picnumber = Math.floor((Math.random() * 4) + 1); 

if (picnumber == 1) { 
    img.src = '1.jpg'; 
} else { 
    if (picnumber == 2) { 
    img.src = '2.jpg'; 
    } else { 
    if (picnumber == 3) { 
     img.src = '3.jpg'; 
    } else { 
     img.src = '4.jpg'; 
    } 
    } 
} 
3

我建議你把圖片在一個數組中。

你可以然後抓住隨機圖像是這樣的:

var pics= ['1.jpg', '2.jpg', '3.jpg', '4.jpg'], 
    picnumber = Math.floor((Math.random() * pics.length)); 

img.src= pics[picnumber]; 
+0

Thanks @ rick-hitchcock如果我將圖片數量擴大到200,會將它們放入像這樣的數組中,這會使應用程序加載速度比僅使用幾張圖片?我想知道在選擇一個之前,Javascript是否實際檢查/提取所有可能的圖像,或者無論陣列中有多少圖片,加載/啓動速度都是相同的? – Emily

+0

使用數組方法可能會更快,因爲它可以直接對其進行索引,而不必嘗試每個「if」測試,直到找到當前的「picnumber」。 –

+0

這也可以爲你節省一大堆打字! :) –