2012-10-24 3 views
1

J'ai besoin d'aide avec un principe javascript. J'ai une variable où une partie du nom de la variable est "dynamique". Laissez-moi essayer d'expliquer;Comment obtenir une base de valeur variable sur deux variables

var name_city = "London"; 
var name_code = "500"; 

de la page Web que je suis une valeur nommée "type". Ce sera "ville" ou "code".

(je viens de le rendre manualy ici à cause de cet exemple)

var type = "city"; 

Donc, avec « ville » comme valeur de type, je veux maintenant alerter « name_city ». Mais je n'ai aucune idée sur la façon de le faire avec javascript.

Quelqu'un sait-il?

en php Je pense que ce sera comme ceci: Pour ce faire

$type = "city"; 

$varname = 'name_'. $type; 
echo ${$varname}; 

J'apprécie toute aide ou d'un indice dans la bonne direction :-)

+0

Essayez de regarder: http://stackoverflow.com/questions/7762502/dynamic-javascript-variable-names, http://stackoverflow.com/questions/4385084/javascript-dynamic-variables?lq=1 ou http://stackoverflow.com/questions/12826154/can--create-dynamic-object-names-in-javascript?lq=1 – Chase

Répondre

2

, vous devez stocker les données dans un littéral d'objet, où vous pouvez accéder à ses clés dynamiquement. Si vous écrivez ces variables dans l'objet global/window, vous pouvez y accéder de la même manière.

// global scope 
var name_city = "London"; 

var type = "city"; 

console.log(window[ "name_" + type ]); 

Cela ne fonctionnera pas si vous n'êtes pas dans la portée globale (qui en fait, ne devrait pas être le cas du tout). Donc, vous devez stocker les données dans un objet

var data = { 
    "name_city": "London", 
    "name_code": "500" 
}; 

puis faire la même chose, d'accès juste via

console.log(data[ "name_" + type ]); 
+1

+1 Vous avez terminé le problème de portée avant moi, donc j'ai supprimé le mien ci-dessus. –

+0

C'est ce que je cherchais. Je vous remercie! – user1771176

0

auto-défini SI vous avez plusieurs variables toutes décrivant les différents aspects « parallèles » du même entité, vous aurez presque toujours mieux à l'aide d'un objet à la place, à savoir

var name = {city: "London", code: 500}; 

vous pouvez alors accéder aux attributs individuels par l'indexation avec une variable, par exemple name[type] ou par nom de propriété, par ex. name.code. Un gros avantage est que vous pouvez traiter l'objet comme une unité à des fins telles que le passer à une fonction plutôt que d'avoir à passer plusieurs variables différentes.

Questions connexes