通过组合动态和静态文本返回变量值

时间:2011-05-24 10:37:33

标签: javascript jquery variables

我有许多带有唯一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);

    });

});

3 个答案:

答案 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]);
    });
});