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

Return a variable value by combining dynamic and static text

本文关键字:文本 返回 变量值 静态 组合 动态      更新时间:2023-09-26

我有很多带有唯一ID的复选框,比如

<input id="apple" />
<input id="banana" />
<input id="orange" />

我还有一些变量,ID末尾附加了单词"Tree"。我可以在单击输入时获得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);
    });
});

您必须创建一个哈希映射:

$(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);
   });
});

您可以像John Green所说的那样创建哈希图,或者走eval:的邪恶(但更快)路线

console.log(eval(combinedName));

编辑:我并不是说真的更快(我不知道是不是),我只是说变化更少。

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