Jquery - 从多个<option> selection </option>构建变量名

时间:2014-03-01 21:13:01

标签: jquery

半假设性问题,假设我有多个字符串,其中一个字符串可能需要根据所做的下拉选项进行显示。我想到的是以下内容:

var 11 = "fast cars"
var 12 = "slow cars"
var 21 = "fast bikes"
var 22 = "slow bikes"

然后通过两个框的组合选择显示的字符串:

<select id="type">
<option value="1">automobiles</option>
<option value="2">motorbikes</option>
</select>
<select id="type2">
<option value="1">get there fast</option>
<option value="2">be comfortable</option>
</select>

在我的主体中,我的代码经常引用变量“transtype”。我希望能够做的是将变量“transtype”链接到上面的变量字符串之一,即:

var one = $( "#type" ).val();
var two = $( "#type2" ).val();
var fullvarname = [one + two];
var transtype = fullvarname;

目前我得到的是变量“transtype”回显“11”或“21”等,而不是变量应链接到的字符串。显然这是因为代码将连接值视为字符串。问题是,如何让它将其识别为变量的名称而不是字符串本身?

作为一个警告,我想指出实际上有大约六个盒子,每个盒子有几个选项。尝试使用所有可能组合的一个下拉列表将是可怕的。此外,所需的字符串(例如“快车”实际上是包括{和[)在内的更多串。我也热衷于使用jquery,以便我可以动态更新内容,而无需重新加载PHP的整个页面。

我是Javascript / jquery的新手,这是我在这里和其他地方的其他帖子中无法解决的极少数领域之一。如果上述情况不可能,或者通过不同的方法可以更好地实现,请随意说...

1 个答案:

答案 0 :(得分:0)

如果要使用字符串值访问变量,可以尝试将变量(11,12 ...)包装在对象中,然后使用obj[keyString]语法访问它们。

所以,比如:

var names = {};
names["11"] = "fast cars";
names["12"] = "slow cars";
names["21"] = "fast bikes";
names["22"] = "slow bikes";

应该工作。使用names[one+two]

访问它们

DEMO