2012-07-11 82 views
1

我正在嘗試使用HTML表單字段的值來定義我在JavaScript函數中使用的變量。我有一個解決方案,但我認爲有一個更優雅的方式來做到這一點。使用表單字段值作爲JavaScript變量的參考

我有兩個名字的數組,男性和女性,我的HTML表單有一組男性和女性的單選按鈕。在提交,我這樣做:

gender = $("#gender input:checked").val(); //get value of checked button 
if (gender == "male") { 
    name = male[Math.floor(Math.random()*male.length)]; 
} else { 
    name = female[Math.floor(Math.random()*female.length)]; 
} 
$("#result").html(name); 

我的解決方案是如果其他,但我想知道如果事情能性別值轉換成同名的變量的引用。然後我可以用這樣的東西來代替if-else:

name = gender[Math.floor(Math.random()*gender.length)]; 

我會好奇聽到你在想什麼。謝謝!

回答

2

你可以把男女爲對象:

var genderData = { 
    male: [ ... ] 
    female: [ ... ] 
} 

然後用下面的語法:

genderData[gender][Math.floor(Math.random() * genderData[gender].length)] 

你也可以把它簡化一點,使事情更加易讀:

var gd = genderData[gender]; 
name = gd[Math.floor(Math.random() * gd.length)]; 
+0

謝謝,這工作得很好。關鍵是將字段值作爲對象屬性名稱應用。看起來不錯。 – 2012-07-11 22:31:15

+0

不客氣,很高興它幫助你。 – 2012-07-12 01:46:46

0

如果male/female是全局變量,則可以在window對象中找到它們。在這種情況下,你應該能夠使用像

name = window[gender][Math.floor(Math.random() * window[gender].length)]; 

其中gender必須是一個有效的變量名。不過,我勸您不要使用全局變量。而是使用具有malefemale屬性的本地對象。