Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用表单字段值作为JavaScript变量的引用_Javascript_Jquery - Fatal编程技术网

使用表单字段值作为JavaScript变量的引用

使用表单字段值作为JavaScript变量的引用,javascript,jquery,Javascript,Jquery,我试图使用HTML表单字段的值来定义我在JavaScript函数中使用的变量。我有一个解决方案,但我认为有一个更优雅的方法 我有两个名称数组,男性和女性,我的HTML表单有一组男性和女性的单选按钮。提交时,我会这样做: gender = $("#gender input:checked").val(); //get value of checked button if (gender == "male" ) { name = male[Math.floor(Math.random()*m

我试图使用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)];

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

如果
男性
/
女性
是全局变量,则可以在
窗口
对象中找到它们。在这种情况下,您应该能够使用

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

其中
gender
必须是有效的变量名。但是,我不鼓励您使用全局变量。改为使用属性为
male
female

的本地对象,您可以将性别放入对象中:

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)];

谢谢,这很有效。该键将字段值作为对象属性名称应用。看起来不错。