2012-07-11 44 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属性的本地对象。