admin管理员组

文章数量:1220792

I got the dynamic variable name doing

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

I would like to assign a value to the dynamic variable. I tried this

eval(varname) = value; 

but it doesn't work. What do I need to do in order to assign a value to the dynamic variable?

I got the dynamic variable name doing

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

I would like to assign a value to the dynamic variable. I tried this

eval(varname) = value; 

but it doesn't work. What do I need to do in order to assign a value to the dynamic variable?

Share Improve this question edited Feb 24, 2016 at 18:35 Adam Michalik 9,94513 gold badges75 silver badges107 bronze badges asked Sep 4, 2012 at 16:52 juria_robertsjuria_roberts 1551 gold badge2 silver badges10 bronze badges 4
  • 2 Don't use friggin' dynamic variables. Use objects. In particular, data[newid][name], and that works with assignment too. – user395760 Commented Sep 4, 2012 at 16:55
  • actually I have inserted many jsons through php into my javascript with names in the format datafirst,datasecond etc so in my javascript code im trying to decide which variable amongst them I should manipulate – juria_roberts Commented Sep 4, 2012 at 17:03
  • Then don't generate data like that. Generate a JSON literal where the newid is also abstracted out. – user395760 Commented Sep 4, 2012 at 17:04
  • It's fine to use it for educational purposes. – SSH This Commented Jul 28, 2018 at 20:05
Add a comment  | 

2 Answers 2

Reset to default 8
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

Having said that, eval is evil. Are you really sure you need to use dynamic variables?

Don't use eval. Don't use dynamic variables.

If you have an unordered group of related data, store it in an object.

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

although it looks like you are dealing with a dynamic object so

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

本文标签: javascriptHow to assign a value to a dynamic variable using evalStack Overflow