javascript - Obter o ID de um elemento e defini-lo como variável
Eu tenho um botão:
<button class="btn btn-info continue">
<i class="ace-icon fa fa-check bigger-110"></i>
Continue
</button>
Ao clicar :
$(".continue").click(function(e) {
currForm = $(this).parents('form');
e.preventDefault();
});
Posso obter o id com bastante facilidade: currForm.attr('id');, mas posso definir o valor desse id como uma variável.
Algo como as variáveis variáveis do PHP:
$a = 'hello';
$$a = 'world';
echo $hello;
Editar: Eu não quero mudar o ID do elemento. Eu quero pegar esse ID e usá-lo como nome para uma variável em JavaScript. Por exemplo, o elemento que forneci acima está em um form que tem ID='example_id'. currForm.attr('id') me dará example_id e eu quero definir uma variável example_id e atribuir um valor a ela.
var example_id = 'some value';Resposta #1
Aqui estão 3 opções para você.
eval (não recomendado)
Você pode usar a função do Javascript eval para conseguir o que deseja. Mas esteja ciente, isso não é recomendado (eu enfatizei isso duas vezes, espero que tenha entendido!).
Não use eval desnecessariamente!
eval() é uma função perigosa, que executa o código que lhe é passado com os privilégios do chamador. Se você executar eval() com uma string que pode ser afetada por uma parte maliciosa, você pode acabar executando código malicioso na máquina do usuário com as permissões da sua página/extensão. Mais importante, o código de terceiros pode ver o escopo em que eval() foi invocado, o que pode levar a possíveis ataques de maneiras às quais a função semelhante Function não é suscetível.
Seria usado assim :
eval('var ' + varName + ' = "something";');
Notação de objeto Window (Melhor que eval, ainda não é realmente recomendada)
Este método consiste em usar a notação de objeto fornecida pelo JavaScript no objeto global window. Isso está poluindo o escopo global do window e pode ser sobrescrito por outros arquivos JS, o que é ruim. Se você quer saber mais sobre esse assunto, esta é uma boa pergunta: Armazenar uma variável no objeto 'window' do JavaScript é uma maneira adequada de usar esse objeto?.
Para usar esta técnica, você faria algo como:
window[varName] = something;
alert(window[varName]);
Usando um objeto (recomendado)
A melhor solução seria criar seu próprio escopo de variáveis. Por exemplo, você poderia criar no escopo global uma variável e atribuir um objeto a ela. Você pode então usar a notação de objeto para criar suas variáveis dinâmicas. Funciona da mesma maneira que o window:
var globalScope = {};
function awesome(){
var localScope = {};
globalScope[varName] = 'something';
localScope[varName] = 'else';
notSoAwesome();
}
function notSoAwesome(){
alert(globalScope[varName]); // 'something';
alert(localScope[varName]); // undefined
}
Resposta #2
Você pode fazer isso usando um objeto JavaScript:
var currForm = $(this).parents('form');//form id="hello"
var obj = {};
obj[currForm.attr('id')] = 30;
console.log(obj.hello)
