Nommer dynamiquement une variable [Résolu]

Signaler
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009
-
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009
-
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

Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

    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é
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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 !
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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>
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
testé avec Chrome, FireFox, IE, K-Meleon, Opera, Safari
tout baigne ==> mauvais copié/collé ou vous n'avez pas utilisé tel quel.
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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....
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
>>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 !!!
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>>>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.....
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
>>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
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
c'est plutôt d'ailleurs ma 3ème réponse !
la 1ère n'étant que pour te demander ce que tu voulais....
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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....
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
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.
Messages postés
46
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
31 juillet 2009

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é.