Nommer dynamiquement une variable

Résolu
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009 - 9 mai 2009 à 11:28
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009 - 10 mai 2009 à 12:03
Bonjour, dans le cadre  d'un script js j'ai besoin de nommer dynamiquement mes variables. Je vais tenter de vous donner un exemple parlant ^^:

Prérequis : Toto_String = "valeur1|valeur2|valeur3|valeur4|valeur5|valeur6"

function Toto(Toto_String) {

    var Toto_Tableau = new Array();
      Toto_Tableau = Ingredient_String.split('|');
        var Toto_Variable1 = Toto_Tableau[0] ;
        var Toto_Variable2 = Toto_Tableau[1];
        var Toto_Variable3 = Toto_Tableau[2];
        var Toto_Variable4 = Toto_Tableau[3];
        var Toto_Variable5 = Toto_Tableau[4];
        var Toto_Variable6 = Toto_Tableau[5];

}

Jusque là tout va bien.
 Ce que je souhaite faire c'est de créer une variable dont le nom sera Toto_Toto_Variable1 + Toto_Variable2

Est ce possible ?

Je vous remercie par avance de l'attention que vous porterez à ma requête.

Cordialement Quentin0590

22 réponses

quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 13:59
c'est exactement ce que je disais !!!! vous n'employez pas "tel quel" !!!!! ( prière de vous calmer)

Je l'ai testé telle quelle dans une nouvelle page pour être sur qu'il n'y ai pas d'interférence avec les autres script. Résultat => undefined

La seule modification réelle est l'intégration d'une fonction. Modification qui soit dit en passant est obligatoire pour essayer de solutionner le problème exposer dans mon premier post dans lequel j'expose clairement le fait que j'ai besoin que le code marche dans une fonction.

Si j'ai séparé la déclaration de l'objet tableau et l'ajout de donné c'est parce que d'une part les déclaration doivent , afin d'eviter des erreurs et pour un confort de programmation, être explicite, et d'autre part parce que le code devient fonctionnel si la declaration de variables est en dehors de la fonction, d'où la necessité de séparer ces deux actions..

Je vous pris donc de ne pas haussez le ton de la voix et de mieux lire les post avant de repondre.

Sur ce je vous remercie
3
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 14:01
    var bonjour = 10;
    var tableau_test = new Array();
   
    function test() {
    tableau_test[0]= "bon";
    tableau_test[1]= "jour";
    alert(window[tableau_test[0] + tableau_test[1]]);
}

Voilà le script qui répond au problème posé
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 11:34
Bonjour,

pas compris ?

tu veux que la variable s'appelle "Toto_Variable1 + Toto_Variable2"
    dans ce cas, à prirori, oublie, un name avec +, je doute
    et je ne vois pas l'intérêt de toutes manières

ou tu veux une variable, dont le nom importe peu,
        qui contienne les 2  postes de l'array ?

Cordialement [mon Site] [M'écrire] Bul
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 11:51
En fait je souhaite que le nom de la variable soit une concaténation des des string contenu respectivement dans Toto_Toto_Variable1 et Toto_Variable2
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 12:03
alors oui, c'est possible
ch'tiot exemple

    var ab=10;
    var t=["a","b","c"];
    alert( window[t[0]+t[1]] );

on devrait pouvoir y arriver avec eval,
mais c'est gourmand et j'aime pas, na !
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 12:15
Je n'ai pas bien compris votre exemple. J'ai l'ai donc essayer pour voir ce qui sort en alert et je reçois undefined.

    var ab=10;  <=========== à quoi sert la variable ab ?
    var t=["a","b","c"]; <========= si je comprend bien t est un tableau de type array
    alert( window[t[0]+t[1]] ); <========== içi t[0] = "a"  t[1] = "b" mais a quoi sert le window ?

Cordialement
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 12:28
undefined ? avec quel navigateur ????
testé avec FF, IE : ok chez moi
vous avez testé "tel quel" ? . mauvais copié/collé ?

<script>
    var ab=10;                                       c'est la variable dont le nom sera utilisé dynamiquement
    var t=["a","b","c"];                            t[0]="a" t[1]="b" t[2]="c"
    alert(window[t[0]+t[1]]);                   window[t[0]+t[1]] c'est ab
//et bien entendu un machin du style
    window[t[1]+t[2]]=20;                      variable bc=20
    alert(bc);

//ça fonctione
</script>
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 12:33
testé avec Chrome, FireFox, IE, K-Meleon, Opera, Safari
tout baigne ==> mauvais copié/collé ou vous n'avez pas utilisé tel quel.
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 13:30
Ne marche pas chez moi, ni sous Firefox ni sous IE, ce n'est pas un mauvais copié collé.

Je l'ai testé telle quelle dans une nouvelle page pour être sur qu'il n'y ai pas d'interférence avec les autres script.

Je suis actuellement à la recherche de la cause de ce problème en le "rescriptant" d'une manière plus explicite :

function test() {
    var bonjour = 10;
    var tableau_test = new Array();
    tableau_test[0]= "bon";
    tableau_test[1]= "jour";
    alert(window[tableau_test[0] + tableau_test[1]]);
}

Merci de me corriger si j'ai fais une erreur dans ce script (qui obtient le même résultat : undefined)

Pourriez vous m'en dire un peu plus sur ce window dans la déclaration de la variable. Je n'ai jamais vu une telle chose, merci de m'éclairer

Cordialement
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 13:44
Bonjour,

certes certes...
c'est exactement ce que je disais !!!! vous n'employez pas "tel quel" !!!!!

essayez donc :
<script>
    var bonjour = 10;
    var tableau_test = new Array();
    tableau_test[0]= "bon";
    tableau_test[1]= "jour";
    alert( window[tableau_test[0]+tableau_test[1]]);
</script>
ben là... ça baigne...
variables globales ou pas...

pour que ce soit des variables locales.... faut creuser un peu plus
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 14:10
par exemple ....
<script>
    var bonjour = 10;
function test() {
    var tableau_test = new Array();
    tableau_test[0]= "bon";
    tableau_test[1]= "jour";
    alert(window[tableau_test[0] + tableau_test[1]]);
}
test();
</script>
ça baigne... mais bonjour est globale !
si on veut strictement du local ( pourquoi faire ????? ) faut voir quoi....
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 14:17
Je n'ai jamais demandé de variable locale.

Mais il semblerai que ce script permette uniquement de d'appeler une variable de manière dynamique (via alert ou via une fonction)

Cependant je cherche à déclaré une variable dynamiquement.

Par exemple : var window[Zone_Tableau[6] + Zone_Tableau[0]] = smthg

Cordialement.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 14:53
>>Je n'ai jamais demandé de variable locale.

ben si... puisque tu fais dans une fonction !
et mon exemple ne l'était pas !
et c'est pour cela que ça ne fonctionnait pas chez toi :
j' insistait : fait "tel quel" ça baignera !

>>var window[Zone_Tableau[6] + Zone_Tableau[0]] = smthg
erreur de syntaxe !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 mai 2009 à 15:15
>>>>var window[Zone_Tableau[6] + Zone_Tableau[0]] = smthg
erreur de syntaxe !!!
et j'ajoute : je t'ai dit comment faire !
>>Voilà le script qui répond au problème posé
pas gonflé le mec ! et il s'attribue la bonne réponse
à son sens... car c'est "même pas vrai" !! , enfin, pas la meilleure !
alors que je lui avais fourni toutes les billes !!!!!!
mais qu'il n'appliquait pas comme il faut
et que je mlui donne une autre réponse si c'est dans une fonction.....
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 16:53
Depuis le début je demande une fonction dans laquelle je pourrai créer (et non appeler) dynamiquement une variable dont le nom dépendra de string issu des paramètres de la fonction.

>>>>var window[Zone_Tableau[6] + Zone_Tableau[0]] = smthg
erreur de syntaxe !!! (
je sais, c'est bien pour ca que je demande...)

>>Voilà le script qui répond au problème posé
J'ai jamais dit que c'était moi qui l'avait créer. Cela permet juste aux autres utilisateur de trouver directement le code final
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 17:17
>>Depuis le début je demande une fonction dans laquelle je pourrai créer
ta demande c'était : dans le cadre  d'un script js j'ai besoin de nommer dynamiquement mes variables

relis ce que je t'ai mis dans ma 2ème réponse suite au fait que tu disais
      que ça ne fonctionnait pas, !?!?
      alors que tu n'employais pas comme il fallait !!!
pas question de fonction la dedans,
j'ai répondu. pour une variable globale.

>>directement le code final
regarde ma réponse sous celle que tu as acceptée !
l'array en global : c'est inutile ( posté sans avoir vu ta réponse )
une variable locale, tu ne voulais pas à ce que tu disais , donc inutile de creuser.


>>je sais, c'est bien pour ca que je demande
relis ce que je t'ai mis dans ma 2ème réponse
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
9 mai 2009 à 17:19
c'est plutôt d'ailleurs ma 3ème réponse !
la 1ère n'étant que pour te demander ce que tu voulais....
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
9 mai 2009 à 17:27
Si l'on regarde mon premier post ainsi que l'exemple qui va avec on y vois une fonction et dans le post 2 " Ce que je souhaite faire c'est de créer une variable dont le nom sera Toto_Toto_Variable1 + Toto_Variable2"

C'est plutôt clair je trouve...

On va pas passer la journée à faire des joutes verbales....
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
10 mai 2009 à 09:38
t'as raison... j'abandonne.
une aide que je regrette au fond....

si on résume :
>>question incompréhensible
<<demande de précisiosn
>>question reformulée
<<réponse
>>ça marche pas !
 ( bien sur, car tu ne fais pas comme mon exemple
 c'est ton adaptation qui foire )
<<montre enfin ce qu'il fait et c'est dans une fonction
  qui utilise une variable locale alors qu'elle doit être globale
<<solution qui fonctionne
  mais tableau global inutile. preuve que pas compris sûrement
>>solution avec fonction
<<comment utiliser var window[Zone_Tableau[6] + Zone_Tableau[0]] = smthg

>>la réponse existe dans le 2ème exemple mis.
0
quentin0590 Messages postés 46 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 31 juillet 2009
10 mai 2009 à 10:25
la réponse existe dans le 2ème exemple mis.

Désolé mais je vois pas là. C'est pas grave je me débrouillerai seul puisque Monsieur est vexé.
0
Rejoignez-nous