说我有以下JS:
var foo_index = 123; var bar_index = 456;
以下HTML:
<div id="foo"></div> <div id="bar"></div>
然后我想这样说:
thisIndex = this.id + '_index'
我希望thisIndex
成为一个数字。如何将字符串(正是变量名称)转换为变量?
答案 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)
答案 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']);