2013-08-18 4 views
-1

Я не могу понять, как использовать имя переменной, ранее созданной с помощью eval, не зная об этом. Я имею в виду:Настройка и использование имени динамической переменной JS

function getName(menu_name, level){ 
    eval("var menu_"+level+"="+menu_name); 
} 

Теперь, как я могу получить имя переменной я только что создал? Вероятно, продолжайте использовать eval, но я должен поместить это имя в вызов $.post как одно из моих полей.

Спасибо за консультацию.

+0

Если вы хотите получить имя только что созданной переменной, используйте тот же код, который вы использовали для его создания в первую очередь! ... но не делайте этого. 'eval' - зло. Переменные переменные являются злыми. JavaScript имеет правильные структуры данных, которые вы можете использовать. (См. Повторяющийся вопрос). – Quentin

+0

Почему вы используете 'eval'? Это вызывает много головных болей и на самом деле не стоит того. Просто используйте массив. – mc10

+0

Спасибо. Проблема в том, что я не знаю значения «уровня», поскольку он отправляется через PHP. То, что я пытаюсь сделать, это иметь menu_0 в первый раз, menu_1 - второй и т. Д., Где 0,1 - значения уровня, отправленного через PHP. – user2694388

ответ

0

Если level представляет собой целое число, вы можете рассматривать его как числовой индекс для массива:

var menu = []; 
menu[level] = menu_name; 

Если level что-нибудь еще, вы можете рассматривать его в качестве ключа для словаря/ассоциативного массива:

var menu = {}; 
menu[level] = menu_name; 

Тогда для любого из решений, если вы хотите получить доступ к menu_name, просто вызовите menu[level].

+0

Уровень - это целое число, но у меня возникают проблемы, когда я пытаюсь это сделать: $ .post ('url.php', {menu_level: menu_name}, function (e) {...}); – user2694388

+0

@ user2694388 В чем проблема? – mc10

+0

Будем говорить другими словами. Я хочу создать имя новой переменной из двух строк, первая из которых «menu_», а вторая - через PHP и «уровень». Очевидно, я не могу просто собрать их вместе. Проблема в том, что я не могу изменить имя ввода в форме html, и насколько мне известно, параметр, который я пишу в вызове $ .post, должен быть таким же, как и имя ввода. – user2694388