1

我正在尝试使用 HTML 表单字段的值来定义我在 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 但我想知道是否可以将性别值转换为对同名变量的引用。然后我可以用这样的东西替换 if-else:

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

我很想听听你的想法。谢谢!

4

2 回答 2

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)];
于 2012-07-11T17:37:20.120 回答
0

如果male/female是全局变量,那么它们可以在window对象中找到。在这种情况下,您应该能够使用类似的东西

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

wheregender必须是有效的变量名。但是,我不鼓励您使用全局变量。而是使用具有属性male和的本地对象female

于 2012-07-11T17:36:47.167 回答