[Javascript] Nom de variable dynamique ? [Résolu/Fermé]

Signaler
-
 Danydan123 -
Bonjour

après avoir parcouru les rubriques des cours sans trouver de réponse, je me tourne vers vous.

Est-il possible de donner un nom dynamique à une variable ?

L'équivalent javascript de:

<?php 
$Nom_Var = Valeur;
$Nom1 = 'Nom_Var';
echo $$Nom1; // Affiche 'Valeur'
?>


Voila en attendant vos réponses, demandez des éclaircissements si je n'ai pas été assez clair !

12 réponses

Je ne veux pas utiliser de php, je donnais juste à titre de comparaison/exemple ;) Mais merci pour la réponse.

Bon j'ai réussi à gérer ça en restant "javascript", voici pour ceux qui pourraient en avoir besoin ma solution:

function Test(Element)
{
//Admettons qu'Element contienne 'Bois'


var Prix = 'Prix_'+Element;
// Prix contient donc 'Prix_Bois'

document.Formulaire.eval(Prix).value = 5000;
// La valeur de l'element Prix_Bois, du formulaire Formulaire est donc définie: elle vaut maintenant 5000.
}



En espérant que ceci puisse aider d'autres personnes !
36
Merci

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez Comment Ça Marche

CCM 81093 internautes nous ont dit merci ce mois-ci

jona303
Messages postés
369
Date d'inscription
dimanche 25 janvier 2009
Statut
Membre
Dernière intervention
28 janvier 2013
28
EDIT : rien :)
En effet la fonction eval() est faite pour çà...
Merci pour ce rappel utile, je l'avais complètement oubliée celle-là ^^

Par contre je suis pas du tout convaincu par la méthode utilisant l'objet window citée plus bas.
Bonjour,

et merci pour l'aide. C'est clair, et très utile.
au lieu de :
document.Formulaire.eval(Prix).value = 5000;
on peut utiliser:
document.Formulaire[Prix].value = 5000;
car des fois eval ne fonctionne pas.
bon c'est trop tard maintenant mais j'aurais plutot fais un document.createElement
Salut à tous,
en cherchant un peu j'ai réussi à trouver comment faire !
Il suffit d'utiliser window[nom_de_variable] ou nom_de_variable peut evidemment etre une variable.
Et voila!
@tibolt
non ce n'est pas l'effet rechercher, en faisant ça tu crées simplement un tableau javascript window et une entrée nom_de_variable dans ce tableau.
> bigpouet
je m'excuse d'insister mais cela ne creer pas "simplement un tableau javascript window" mais bien une variable. Tu peux tester : affecter une valeur à window['nom_de_variable_dynamique'] est l'équivalent de var nom_de_variable_dynamique = valeur... a moins que je n'aie pas bien compris le probleme.
> tibolt
Je suis d'accord avec tibolt, sa méthode permet bien de créer des variables de variables, et ça permet même de créer des fonctions avec un nom dynamique, exemple :

function testation(id) {
window[id + '_calendar'] = new CalendarPopup("test");
window[id + '_calendar'].setReturnFunction(id + "_retour");

window[id + '_retour'] = function(y,m,d) {
document.forms[0][id + '_date'].value = d + '/' + m + '/' + y;
}
}

Merci en tout cas, j'ai pas eut besoin de trop chercher pour faire ça :)
> vikisme
bonjour,
la solution est là ...???
utiliser la fonction eval ...
http://groups.google.com/group/comp.lang.javascript/msg/c9a4fa05542f4743

http://www.zdnet.fr/...
Effectivement tibolt bien vu

Ce post date un peu mais je rajouterai même.
Si ta variable est définie dans un scope

par exemple ici this ;)
this['static'+dynamic] = 'yeah man';
Messages postés
263
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
9 septembre 2007
7
quapel tu une variable dynamique?
Pas variable dynamique, mais Nom de variable dynamique.

En gros, j'aimerais que le nom de ma variable puisse changer afin d'atteindre des objets différents en fonction du cas.

Exemple:

$document.Formulaire.Champ_'Partie variable du nom'.value

Pour illustrer le cas:

J'ai une fonction qui est atteignable par plusieurs endroits.
J'aimerais passer un paramètre qui soit la ' partie variable du nom', sachant que:

- J'ai dans la fonction plusieurs noms de variables qui ont besoin d'être dynamiques
- J'aimerais éviter de passer X paramètres, un pour chaque variable que je dois atteindre.


En espérant que ça t'aide à comprendre mon problème ;)
document.Formulaire.Champ_'Partie variable du nom'.value e

et non pas

$document.Formulaire.Champ_'Partie variable du nom'.value
Tiret à dis : "Pas variable dynamique, mais Nom de variable dynamique."

Et ben,
Une variable dynamique est une variable dont le nom est dynamique.
C'est la même chose, donc inutile de t'auto-corriger.
=D
euh y'a quand même une différence entre:
une variable, dont le nom est dynamiquet...et
une variable dont le contenu l'est.... sans compter les variables dont le nom et le cotenu sont dynamique......
donc il a raison de préciser (oui je sais post de 2002 ^^)
Messages postés
263
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
9 septembre 2007
7
donc il faut que tu fasse du PHP mélanger a du JS
ce que je peu te conseiller c'est de mettre

$variable = ta_variable_JS;
Tout comme samsam : Parfait !
Messages postés
1
Date d'inscription
vendredi 22 août 2014
Statut
Membre
Dernière intervention
22 août 2014

Et pour ceux qui veulent simplifier la formule :

function Test(Element)
{
return document.Formulaire.eval('Prix_'+Element).value;
}
Messages postés
1
Date d'inscription
vendredi 15 décembre 2006
Statut
Membre
Dernière intervention
15 décembre 2006

MERCI pour ta solution Tiret,

Je ne l'ai pas encore testé, mais si ça marche c'est bien pensé.
en faite le principe que tu décris dans ton post est celui des pointeurs
utilisés dans un certain nombre de langage (C ou Java par exemple).
En effet la variable Prix contient "l'adresse" de la variable Prix_Bois qui
elle même contient la valeur 5000 après affectation. Corrige moi si je
me trompe. Bonne continuation.

Prix ---> Prix_Bois = 5000

Man.
Alors là t'est un chef ! ton exemple illustre parfaitement ce dont j'avais besoin...

Voila 1/2 journée de gagné ! T'as bien nommé ton problème, c'est justement les termes que j'ai tapé en pensant à ce problème... merci 1000fois
Bien jouer !
J'aime beaucoup les noms de variables dynamiques en PHP et je me trouver bien dans l'embarras pour l'appliquer en Javascript ...
Merci beaucoup !
MERCI, MERCI, MERCI !
Salut,

merci pour le renseignement, je cherchais egalement cette info !