Obtenir l'ID de l'élément et le définir comme variable

J'ai un bouton:

<button class="btn btn-info continue"> <i class="ace-icon fa fa-check bigger-110"></i> Continue </button> 

Sur clic:

 $(".continue").click(function(e) { currForm = $(this).parents('form'); e.preventDefault(); }); 

Je peux obtenir l'identifiant assez facilement: currForm.attr('id'); , Mais je peux définir la valeur de cet identifiant comme variable.

Quelque chose comme les variables variables de php:

 $a = 'hello'; $$a = 'world'; echo $hello; 

Edit : Je ne veux pas modifier l'identifiant de l'élément. Je souhaite obtenir cette ID et l'utiliser comme un nom pour une variable javascript. Par exemple, l'élément que j'ai fourni ci-dessus est dans une form qui a ID = 'example_id'. currForm.attr('id') me donnera example_id et je souhaite définir une variable example_id et lui attribuer une valeur.

var example_id = 'some value';

Voici 3 options pour vous.

eval (non recommandé)

Vous pouvez utiliser la fonction Javascript pour obtenir ce que vous voulez. Mais soyez conscient, ceci n'est pas recommandé (je l'ai souligné deux fois, j'espère que vous avez compris!).

N'utilisez pas eval inutilement!

Eval () est une fonction dangereuse, qui exécute le code passé avec les privilèges de l'appelant. Si vous exécutez eval () avec une chaîne qui pourrait être affectée par une partie malveillante, vous pouvez finir par exécuter un code malveillant sur l'ordinateur de l'utilisateur avec les autorisations de votre page Web / extension. Plus important encore, le code de tiers peut voir la portée dans laquelle eval () a été invoqué, ce qui peut entraîner des attaques possibles de manière à ce que la fonction similaire n'est pas susceptible.

Il serait utilisé comme ça:

 eval('var ' + varName + ' = "something";'); 

Notation d'objet de fenêtre (Mieux vaut que eval , toujours pas vraiment recommandé)

Cette méthode consiste à utiliser la notation d'objet fournie par JavaScript sur l'objet de fenêtre globale. Cela pollue la portée de la fenêtre globale et peut être surchargé par d'autres fichiers JS qui sont mauvais. Si vous voulez en savoir plus sur ce sujet, il s'agit d'une bonne question: le stockage d'une variable dans l'objet «fenêtre» de JavaScript est un bon moyen d'utiliser cet objet? .

Pour utiliser cette méthode, vous ferez une telle chose:

 window[varName] = something; alert(window[varName]); 

Utilisation d'un objet (recommandé)

La meilleure solution serait de créer votre propre portée variable. Par exemple, vous pouvez créer sur la portée globale une variable et lui attribuer un objet. Vous pouvez alors utiliser la notation d'objet pour créer vos variables dynamiques. Cela fonctionne de la même manière que la fenêtre:

 var globalScope = {}; function awesome(){ var localScope = {}; globalScope[varName] = 'something'; localScope[varName] = 'else'; notSoAwesome(); } function notSoAwesome(){ alert(globalScope[varName]); // 'something'; alert(localScope[varName]); // undefined } 

Vous pouvez le faire en utilisant l'objet javascript:

 var currForm = $(this).parents('form');//form id="hello" var obj = {}; obj[currForm.attr('id')] = 30; console.log(obj.hello) 

Vous pouvez utiliser et objecter pour stocker vos variables dans:

 var variables = {}; 

Pour ajouter une variable, tapez simplement:

 variables[name] = value; 

Et pour accéder à la valeur:

 variables[name] 

Vérifiez ici: jsFiddle

Le bouton 2 lit la valeur des variables [formid] et le bouton 1 définit formid à soumis

Essayez l'une des options suivantes:

 $(this).attr(example_id, "value") 

Ou

 window[ currForm.attr(id)] = 12; 

Ou

 window[ this.id ] = 12; 

Votre meilleure option pour archer ce que vous voulez vraiment est d'utiliser eval (), comme ceci:

 eval("var " + currForm.attr('id'); 

Vérifiez ce lien ->

Variables dynamiques en Javascript

Utiliser eval (mais pas recommandé):

 var id = 'that_id'; eval(id+" = 'other id';"); alert(that_id); // results: 'other id'