我可以使用字符串引用变量吗?

时间:2010-08-25 12:02:35

标签: javascript

说我有以下JS:

var foo_index = 123;
var bar_index = 456;

以下HTML:

<div id="foo"></div>
<div id="bar"></div>

然后我想这样说:

thisIndex = this.id + '_index'

我希望thisIndex成为一个数字。如何将字符串(正是变量名称)转换为变量?

7 个答案:

答案 0 :(得分:11)

您应该将变量放在一个对象中,如下所示:

var indices = { 
    foo: 123,
    bar: 456
};

var thisIndex = indices[this.id];

此代码使用 JSON语法对象文字来定义具有两个属性的对象,并使用[]按名称访问属性。

你也可以写

var indices = new Object;
indices.foo = 123;
indices["bar"] = 456;

答案 1 :(得分:10)

你可以。如果foo_index和bar_index是全局变量,您只需执行:

var thisIndex = window[this.id + '_index'];

答案 2 :(得分:5)

您可以尝试使用eval函数:

http://www.w3schools.com/jsref/jsref_eval.asp

它完全符合您的需要。

答案 3 :(得分:1)

要回答您的问题,您可以使用eval函数来评估字符串:

thisIndex = eval(this.id + '_index');

但是,使用eval函数通常表示代码构造错误。我认为你应该使用一个关联数组:

var numbers = { foo: 123, bar: 456 };
thisIndex = numbers[this.id];

答案 4 :(得分:1)

window["myvar"] = 'hello';

alert(myvar);

答案 5 :(得分:1)

我不确定你想要达到什么目标,但也许这种方法可能会更好(这取决于某些因素,比如下面评论中用作@Andy E点的HTML版本):

<div id="foo" index="123"></div>
<div id="bar" index="456"></div>
<script>
   var fooIndex = document.getElementById("foo").getAttribute("index");
</script>

此处index的值与相应的HTML元素保持在一起。

答案 6 :(得分:0)

我想你想要这样的东西:

// put your properties in an object of some kind
var dictionary = 
{
    foo_index: 123,
    bar_index: 456
};

// you can set further properties with property syntax
dictionary.again_index = 789;

// or dictionary syntax - same result
dictionary['another_index'] = 012;

// then function to get the number value from the index name becomes
var thisIndex = Number(dictionary[this.id + '_index']);