2011-08-27 93 views
1

有時隨機生成的字母等於'undefined'從數組中隨機生成的字母有問題

任何人都知道爲什麼?

代碼:

<script type="text/javascript"> 
var myArray= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; 

randomnumber=Math.floor(Math.random()*27); 
alert(myArray[randomnumber]); 
+0

看起來它是在這[jsfiddle](http://jsfiddle.net/zGghJ/) –

+0

@macek在這裏工作完美,你是否嘗試加載它不止一次?它肯定也會彈出空白。 – Sinetheta

+0

是的,我不能複製它,要麼在jsfiddle – HaloZero

回答

3

那麼,它可能必須使用27號的時候有英語字母表中26個字母的東西跟你的Math.floor(的Math.random()* 27) 。

math random returns 0-.999... 
math random * 27 returns 0-26.999... 
floor math random * 27 returns 0 - 26 
an array with every english letter has 26 items 
which means it has items indexed from 0-25 

因此,您會在每個方塊的所有負載的1/27中獲得一個空白。然而,一旦「#next」已經播種,它會永遠留一個「信」,因爲你與

$("#next").text(good[randomnumber]); 

randomnumber=27good[randomnumber]=undefined$("#next").text(undefined)什麼都不做這樣的「#next」內容保持不變取代它。仍然破碎,不太明顯。只需將27改爲26即可完成。

+0

實際上,有一封英文新信的請願書,總共27封。也許ogps92剛剛超過新標準。有一天你的答案會是錯誤的,我們會投下它。 :o) – Steve

+0

解決了這個問題我猜...但是爲什麼它只發生在加載的時候(而不是其他隨機字母產生的時候) – ajax333221

+0

因爲當你已經有方塊中的內容傳遞「undefined」到text()什麼都不做。試着看看http://jsfiddle.net/zGghJ/2/這樣的輸出,最終你會看到27:undefined,並注意到最後一個框中的字母保持不變。 – Sinetheta