Donc j'ai besoin de quelque chose comme ça depuis un moment maintenant mais je n'ai jamais été en mesure de trouver quelque chose qui répond à mes besoins, très probablement je cherche les mauvaises choses!
Mon objectif est de mettre un paramètre à partir d'un fonction comme foobar ("test") et mettez le paramètre plus quelques chaînes pré-écrites de la fonction et plus les ensemble et devenez donc une variable préexistante ...
Je pense que j'explique très mal ... mais avec un peu de chance, l'exemple de code obtient une meilleure explication ...
J'ai essayé quelques choses simples qui étaient évidentes ne fonctionneront pas, donc je n'ai probablement pas besoin de montrer ce que Je l'ai fait ...
var text1 = "this is text" function foo(id) { object.innerHTML = "text" + 1 // Then plus those together and make it set it to the variable text1 } foo(1)
Attendu: je voudrais qu'il écrive dans l'objet "ceci est du texte" car il transforme le texte et la variable id aka un 1 en text1 qui est une variable avec la chaîne "ceci est du texte"
Résultats réels: évidemment cela ne fonctionnera pas, je n'ai même pas besoin de l'écrire pour être en mesure de découvrir que cela ne fonctionnera pas. .. Juste un exemple pour mieux expliquer ...
J'espère que vous pourrez aider, merci!
3 Réponses :
Vous devez utiliser la fonction eval.
var text1 = "this is text" var text2 = "this is text2" function foo(id) { console.log(eval('text'+id)); } foo(2)
var text1 = "this is text" function foo(id) { object.innerHTML = window['text'+id];} foo(1)
Comme je l'ai expliqué dans mon commentaire, prendre la question au pied de la lettre conduit à recommander quelque chose qui est généralement inutile et sujet aux erreurs, et qui doit donc être évité.
Il existe des alternatives beaucoup plus lisibles, comme la création d'un objet et l'utilisation ses clés et sa notation []
:
<div id="someDiv"></div>
var texts = { example: "this is text", message: "Hello World!" }; function foo(id) { someDiv.innerHTML = texts[id]; } foo("message");
Copie possible de Utiliser des noms de variables dynamiques dans JavaScript
Selon ce que je comprends, vous voulez donner un nombre au paramètre, puis générer un nom de variable dans cette fonction, puis obtenir la valeur de cette variable?
Faire cela est mauvais. Utilisez plutôt un tableau:
var textes = ["bla", "bli"];
puis utilisezelement.innerHTML = text [id];
(les réponses que vous obtenez fonctionnera, mais il est toujours inutile et une mauvaise pratique de le faire)@ChrisG Ce n'est pas mal du tout, c'est ainsi que se fait un dictionnaire en JavaScript, le seul inconvénient de l'exemple de code est que toutes les variables sont sur l'objet global. Utiliser un tableau comme vous l'avez suggéré serait pire car vous devez vous assurer que l '
id
est le même que la position de l'objet dans le tableau.@George Un dictionnaire? Voulez-vous dire un objet ou une carte? Quoi qu'il en soit, utiliser eval est mauvais , tout comme la composition de clés, et je ne comprends pas ce que vous entendez par
vous devez vous assurer que l'identifiant est le même que la position de l'objet dans le tableau
Cette question concerne la réflexion, et c'est un dernier recours et doit être évitée.@ChrisG Je veux dire un objet car c'est un dictionnaire. Je n'ai jamais mentionné l'utilisation de eval, je suis sur l'utilisation de la notation entre crochets. La façon dont vous l'avez dit dans votre commentaire (en utilisant un tableau) signifie que si j'avais l '
id
de 20, il devrait être à la 21e position du tableau.