Возврат значения переменной путем объединения динамического и статического текста - PullRequest
0 голосов
/ 24 мая 2011

У меня есть несколько флажков с уникальными идентификаторами, например

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

У меня также есть несколько переменных со словом «Дерево», добавленным в конец идентификатора. Я могу получить идентификатор, когда нажимаю на вход, но я хотел бы вернуть значение переменной, а не имя, которое я построил.

Может кто-нибудь указать, что я делаю не так в этом коде?

$(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 ]

3 голосов
/ 24 мая 2011

Вы должны создать хеш-карту:

$(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);
   });
});
2 голосов
/ 24 мая 2011

Вы можете создать хэш-карту, как говорит Джон Грин, или пойти злым (но более быстрым) путем eval:

console.log(eval(combinedName));

РЕДАКТИРОВАТЬ: Я не имею в виду буквально быстрее (я понятия не имею, если это так), я просто имею в виду меньше изменений.

1 голос
/ 24 мая 2011

CombinedName - это просто строка, которую вы регистрируете.Я предполагаю, что идентификатором будет яблоко, банан или апельсин (в этом примере), и что вы хотите получить значение из переменной, соответствующей идентификатору + «Дерево»

. Я предлагаю поместить ваши значения в объект с текущей переменнойимена в качестве ключей.После этого вы можете просто сослаться на объект с созданной вами строкой и получить значение

$(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]);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...