2014-01-13 60 views
0

我在这里遇到了一些问题。我有下面的代码声明两个变量:更改名称在另一个变量中的变量

var anawesomevariable = "hello world"; 
var variabletwo = "anawesomevariable"; 

正如你所看到的,第二个变量的内容是一样的第一个变量的名称。我的问题:我想使用variabletwo的内容更改第一个变量。换句话说,我想说“嘿Javascript,改变名称在variabletwo的变量的内容”。有什么办法可以在Javascript中做到这一点?

P.S.我没有带真正解释清楚,但你明白我的意思(我希望)

+1

可能重复[如何查找JavaScript变量的名称](http://stackoverflow.com/questions/724857/how-to-find-javascript-variable-by-its-name) –

+0

为什么?这个问题没有多大意义。你为什么需要这样做? – Doorknob

+0

@DoorknobofSnow我的例子在这里没有任何意义,我承认**,但在我正在做的网络应用**有10个按钮,所有打开相同的弹出式窗口,用户可以更改东西,并且每个按钮都将它的编号传递给函数(按钮1传递1,按钮2传递2等)。当用户点击窗口中的一个按钮时,它需要更改一个包含最后一个按钮编号的变量。所以我需要使用另一个变量来访问该变量(即前面带有其他文本的实际编号)。那现在更有意义了吗? – Toastrackenigma

回答

1

你可以做

eval(variabletwo + ' = "new value"'); 

导致运行代码

anawesomevariable = "new value"; 
+0

我不知道为什么这是downvoted。很明显,'eval'是去这里的路(除非输入是用户指定的或其他的恶意)。虽然我确实说OP的问题没有多大意义。 – Doorknob

+0

谢谢,这个工作完美:) – Toastrackenigma

1

如果awesomevariable是一个全球性的变量你可以这样做:

window[variabletwo] = 'goodbye world'; 
+1

如果变量不是全局的,这将不起作用。 –

+0

因为变量不是全局的,所以这不起作用。 – Doorknob

0

你不能*(也不应该)操纵个变量,但它是小菜一碟与性质

var obj = {anawesomevariable: "hello world"}; 
var variabletwo = "anawesomevariable"; 

obj[variabletwo] = whatever 

^*千万别想 “EVAL” 在这里。认真。

+0

这是做这件事的正确方法,只是它不能帮助原始问题中给出的情况。 –

+0

@JosephMyers:如果答案是eval,你问的是一个错误的问题。 – georg

+0

你几乎总是对的,因为eval几乎总是错的。但是,“编写节目的节目是世界上最快乐的节目。”像root一样,eval几乎可以避免任何代价,并且*绝对可以在像这样的简单情况下避免。但是,由于语言本身的作者太有限,无法预测和设计他们自己设计的语言的所有可能用途,所以有些东西就像eval。许多编程问题只能使用编写代码的代码来解决,尽管这不是其中之一。 –

0

您有几个选项。选项1,使用eval(),我劝阻,将是最简单的,像这样的

eval(variabletwo + ' = "cool"'); 

第二个选项是将它们声明为全局变量,这样

window.anawesomevariable = "hello world"; 
window.variabletwo = "anawesomevariable" 

然后

window[variabletwo]="foo"; 

但是,如果你想保留在当前范围内的东西,在一个对象中声明它,像这样

var obj = {anawesomevariable: "hello world"}; 
var variabletwo = "anawesomevariable"; 

obj[variabletwo] = "foo";