我有许多带有唯一ID的复选框,如此
<input id="apple" />
<input id="banana" />
<input id="orange" />
我还有一些变量,其中“树”一词附加在ID的末尾。我点击输入后能够获取ID,但我想返回变量的值而不是我构建的名称。
有人可以指出我在这段代码中做错了什么吗?
$(document).ready(function(){
var appleTree = 1;
var bananaTree = 4;
var orangeTree = 2;
$('input').click(function() {
var ID = $(this).attr('id');
var combinedName = (ID + "Tree");
console.log(combinedName);
});
});
答案 0 :(得分:3)
您必须创建一个hashmap:
$(document).ready(function(){
var trees = {
appleTree:1, bananaTree:4, orangeTree:2
};
$('input').click(function() {
var ID = $(this).attr('id');
var combinedName = (ID + "Tree");
var treeVal = trees[combinedName];
console.log(treeVal);
});
});
答案 1 :(得分:2)
你可以像John Green所说的那样创建hashmap,或者去eval的邪恶(但更快)路径:
console.log(eval(combinedName));
编辑:我的意思并不快(我不知道是不是),我只是意味着更少的改变。
答案 2 :(得分:1)
CombinedName只是您记录的字符串。 我假设ID将是苹果,香蕉或橙色(在此示例中),并且您希望变量的值对应于ID +“Tree”
我建议将您的值放在一个对象中,并将当前变量名称作为键。之后,您可以使用您创建的字符串引用对象并获取值
$(document).ready(function(){
var values = {"appleTree": 1, "bananaTree": 4, "orangeTree": 2};
$('input').click(function() {
var ID = $(this).attr('id');
var combinedName = (ID + "Tree");
console.log(values[combinedName]);
});
});