2012-09-04 37 views
6

Ho preso il nome variabile dinamica facendoCome assegnare un valore a una variabile dinamica usando eval?

varname = "data" + newid + "['" + name + "']"; 

vorrei assegnare un valore alla variabile dinamica. Ho provato questo

eval(varname) = value; 

ma non funziona. Cosa devo fare per assegnare un valore alla variabile dinamica?

+2

Non utilizzare variabili dinamiche friggin. Usa oggetti. In particolare, 'data [newid] [nome]', e che funziona anche con l'assegnazione. – delnan

+0

in realtà ho inserito molti jsons tramite php nel mio javascript con i nomi nel formato datafirst, datasecond etc così nel mio codice javascript sto cercando di decidere quale variabile tra loro dovrei manipolare –

+0

Quindi non generare dati del genere. Genera un letterale JSON dove anche il 'newid' è astratto. – delnan

risposta

6
var data1 = { a: 200 }; 
var newid = 1; 
var name = "a"; 

var varname = "data"+newid+"['"+name+"']"; 
var value = 3; 
eval(varname + "=" + value); // change data1['a'] from 200 to 3 

Detto questo, eval è male. Sei davvero sicuro di aver bisogno di utilizzare variabili dinamiche?

+0

Per il mio scopo vorrei assegnare un valore alla variabile dinamica che non ottiene il suo valore. Come faccio? –

+0

@juria_roberts: Vedo, uso 'eval (varname +" = "+ valore)' quindi. Considerare anche l'uso della soluzione di @ Quentin invece di utilizzare variabili dinamiche. –

+0

ha funzionato perfettamente grazie –

7

Non utilizzare eval. Non usare variabili dinamiche.

Se si dispone di un gruppo non ordinato di dati correlati, memorizzarlo in un oggetto.

var myData = {}; 
myData[ newid + name ] = value; 

anche se sembra che si tratta di un oggetto dinamico in modo

myData[ newid ] = myData[ newid ] || {}; 
myData[ newid ][ name ] = value; 
Problemi correlati