У меня есть кнопка:
<button class="btn btn-info continue"> <i class="ace-icon fa fa-check bigger-110"></i> Continue </button>
По щелчку:
$(".continue").click(function(e) { currForm = $(this).parents('form'); e.preventDefault(); });
Я могу легко получить id: currForm.attr('id');
, но могу ли я установить значение этого id как переменной.
Что-то вроде переменных переменных php:
$a = 'hello'; $$a = 'world'; echo $hello;
Изменить : я не хочу менять идентификатор элемента. Я хочу получить этот идентификатор и использовать его как имя для переменной javascript. Например, элемент I, указанный выше, имеет form
которая имеет ID = 'example_id'. currForm.attr('id')
даст мне example_id
и я хочу установить переменную example_id
и присвоить ей значение.
var example_id = 'some value';
Здесь 3 варианта для вас.
eval
(не рекомендуется) Вы можете использовать функцию eval
для достижения желаемого. Но имейте это в виду, это не рекомендуется (я дважды подчеркивал это, надеюсь, вы поняли!).
Не используйте eval ненужно!
eval () – опасная функция, которая выполняет код, который передается с привилегиями вызывающего. Если вы запустите eval () со строкой, на которую может повлиять злонамеренная сторона, вы можете запустить вредоносный код на компьютере пользователя с разрешениями вашей веб-страницы / расширения. Что еще более важно, сторонний код может видеть область, в которой был вызван eval (), что может привести к возможным атакам таким образом, чтобы подобная функция не была восприимчивой.
Он будет использоваться следующим образом:
eval('var ' + varName + ' = "something";');
eval
, все еще не рекомендуется) Этот метод состоит из использования объектной нотации, предоставленной JavaScript в глобальном объекте окна. Это загрязняет глобальную область окна и может быть отменено другими JS-файлами, что плохо. Если вы хотите узнать больше об этом предмете, это хороший вопрос: Хранение переменной в объекте JavaScript «window» является правильным способом использования этого объекта? ,
Чтобы использовать этот метод, вы бы сделали так:
window[varName] = something; alert(window[varName]);
Лучшим решением будет создание вашей собственной переменной. Например, вы можете создать в глобальной области видимости переменную и присвоить ей объект. Затем вы можете использовать обозначение объекта для создания переменных динамики. Он работает так же, как и в окне:
var globalScope = {}; function awesome(){ var localScope = {}; globalScope[varName] = 'something'; localScope[varName] = 'else'; notSoAwesome(); } function notSoAwesome(){ alert(globalScope[varName]); // 'something'; alert(localScope[varName]); // undefined }
Вы можете сделать это с помощью javascript-объекта:
var currForm = $(this).parents('form');//form id="hello" var obj = {}; obj[currForm.attr('id')] = 30; console.log(obj.hello)
Вы можете использовать и объекты для хранения ваших переменных в:
var variables = {};
для добавления переменной просто введите:
variables[name] = value;
и получить доступ к значению:
variables[name]
Посмотрите здесь: jsFiddle
Кнопка 2 читает значение переменных [formid], а кнопка 1 задает formid для отправки
Попробуйте выполнить одно из следующих действий:
$(this).attr(example_id, "value")
Или
window[ currForm.attr(id)] = 12;
Или
window[ this.id ] = 12;
Ваш лучший вариант для архивирования того, что вы действительно хотите, это использовать eval (), например:
eval("var " + currForm.attr('id');
Проверьте эту ссылку ->
Динамические переменные в Javascript
Использовать eval (но не рекомендуется):
var id = 'that_id'; eval(id+" = 'other id';"); alert(that_id); // results: 'other id'