半假设性问题,假设我有多个字符串,其中一个字符串可能需要根据所做的下拉选项进行显示。我想到的是以下内容:
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的新手,这是我在这里和其他地方的其他帖子中无法解决的极少数领域之一。如果上述情况不可能,或者通过不同的方法可以更好地实现,请随意说...
答案 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]