【问题标题】:Use form field value as reference to JavaScript variable使用表单字段值作为对 JavaScript 变量的引用
【发布时间】:2012-07-11 09:35:30
【问题描述】:

我正在尝试使用 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)];

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

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案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)];
      

      【讨论】:

      • 谢谢,效果很好。关键是将字段值应用为对象属性名称。看起来不错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多