2012-09-04 71 views
6

我得到的動態變量名做如何使用eval將值賦給動態變量?

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

我想一個值分配給動態變量。我試過這個

eval(varname) = value; 

但它不起作用。爲了給動態變量賦值,我需要做什麼?

+2

不要使用受詛咒的動態變量。使用對象。特別是'data [newid] [name]',並且也適用於賦值。 – delnan

+0

實際上我已經通過php插入了很多jsons到我的javascript中,名稱格式爲datafirst,datasecond等,所以在我的JavaScript代碼中我試圖決定哪些變量當中我應該操作 –

+0

然後不要生成那樣的數據。生成一個JSON文字,其中'newid'也被抽象出來。 – delnan

回答

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 

話雖如此,eval是邪惡的。你確定你需要使用動態變量嗎?

+0

爲了我的目的,我想給動態變量賦值而不是獲得它的值。我該怎麼做? –

+0

@juria_roberts:我明白了,那麼使用'eval(varname +「=」+ value)'。另外考慮使用@ Quentin的解決方案,而不是使用動態變量。 –

+0

非常感謝 –

7

請勿使用eval。不要使用動態變量。

如果您有一組無關的數據,請將其存儲在一個對象中。

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

雖然看起來你是一個動態對象處理這樣

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