2012-09-04 27 views
6

tôi tên biến động làmLàm cách nào để gán giá trị cho biến động bằng eval?

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

Tôi muốn gán một giá trị vào biến động. Tôi đã thử điều này

eval(varname) = value; 

nhưng nó không hoạt động. Tôi cần phải làm gì để gán giá trị cho biến động?

+2

Không sử dụng friggin' biến động. Sử dụng các đối tượng. Đặc biệt, 'dữ liệu [newid] [tên]', và nó cũng hoạt động với nhiệm vụ. – delnan

+0

thực sự tôi đã chèn nhiều jsons thông qua php vào javascript của tôi với tên trong định dạng datafirst, datasecond vv vì vậy trong mã javascript của tôi im cố gắng quyết định biến nào trong số chúng tôi nên thao tác –

+0

Sau đó, không tạo dữ liệu như thế. Tạo một chữ JSON trong đó 'newid' cũng được trừu tượng hóa. – delnan

Trả lời

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 

Có nói rằng, eval là điều xấu. Bạn có thực sự chắc chắn bạn cần sử dụng các biến động không?

+0

Vì mục đích của tôi, tôi muốn gán một giá trị cho biến động không nhận được giá trị của nó. Làm cách nào để làm điều đó? –

+0

@juria_roberts: Tôi thấy, sử dụng 'eval (varname +" = "+ value)' sau đó. Cũng nên xem xét sử dụng giải pháp @ Quentin thay vì sử dụng các biến động. –

+0

đã hoạt động rất tốt nhờ –

7

Không sử dụng eval. Không sử dụng các biến động.

Nếu bạn có một nhóm dữ liệu liên quan không theo thứ tự, hãy lưu trữ nó trong một đối tượng.

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

mặc dù có vẻ như bạn đang đối phó với một đối tượng năng động nên

myData[ newid ] = myData[ newid ] || {}; 
myData[ newid ][ name ] = value; 
Các vấn đề liên quan