2012-02-23 8 views
0

facile à expliquer en montrant le code:Javascript: Nouveau nom de la variable composée de la valeur d'une autre variable

var delta_selected = false; 
var magma_selected = false; 
var aqua_selected = false; 

// Somewhere in my functions... 
if (sumthing == 'sumthing1') { 
    topic = 'delta'; 
} else if (sumthing == 'sumthing2') { 
    topic = 'magma'; 
} else { 
    topic = 'aqua'; 
} 

// Then assign it (so if topic is delta, then delta_selected = true) 
topic + "_selected" = true; 

Cette dernière ligne ne fonctionne pas. Erreur de syntaxe.

J'ai besoin d'aide pour comprendre comment procéder. Merci!

+1

Pourquoi ne pas simplement définir ** delta_seleted = true ** au lieu de ** topic = 'delta' **, etc ... – jmaglio

+0

Si je pouvais, je aurait. : D J'ai seulement posté une partie du code de sorte que vous ne pouvez pas voir pourquoi je ne peux pas spécifier le nom. – fahad

Répondre

3

essayer cette

window[topic + "_selected"] = true; 
+0

Ça marche! Merci! : D – fahad

0

Jetez un oeil à la fonction "eval()". Vous finirez probablement avec quelque chose comme:

eval(topic + "_selected = true;") 

Mais vérifiez la documentation pour être sûr.

Espérons que cela aide.

+2

Bien que juste pour souligner ... eval est souvent mal vu. – cjstehno

+0

oui, je ne voudrais pas utiliser eval. Content de savoir que je peux le faire comme ça. – fahad

3

Pourquoi utiliser des variables? Il me semble que vous avez besoin d'une structure unique qui contient toutes vos valeurs _selected.

var selected = { 
    delta:false, 
    magma:false, 
    aqua:false 
}; 

puis ...

if (sumthing == 'sumthing1') { 
    topic = 'delta'; 
} else if (sumthing == 'sumthing2') { 
    topic = 'magma'; 
} else { 
    topic = 'aqua'; 
} 

selected[topic] = true; 
+2

+1, c'est une bien meilleure idée –

+2

+1, d'accord, bien meilleure solution. –

+0

Merci pour la suggestion – fahad

Questions connexes