我有两个变量,一个包含有关对象的额外信息,并且被命名为extra_info +对象的id。另一个保存该变量的名称:
selector = 'extra_info' + subscid;
我正在尝试访问存储在包含额外信息的变量中的数据,但我似乎无法访问它。愚蠢,我知道: - )
编辑:那么,我最终需要访问的变量的名称是:
extra_infoXXXXX
其中XXXXX存储在subscid中。
答案 0 :(得分:2)
没有引号:
selector = extra_info + subscid;
或者,我不愿意这样做,因为它是设计糟糕的红旗,你可以使用eval()
:
selector = eval('extra_info' + subscid);
(Obilgatory "eval is evil" link)
修改强>
听起来你应该将extra_info
存储在数组对象中,其索引属性为subscid
!
要访问,请执行extra_info[subscid]
。
答案 1 :(得分:2)
修改强>:
来自你的评论:
extra_infoXXXXX持有一个字符串
...听起来如果subscid
包含"foo"
,您希望获得extra_infofoo
的值。如果是这样,你需要一个物体来查看它;否则,您将被迫使用eval
。
如果这些extra_infoxxxx
变量是全局变量,您可以在窗口中查找它们:
selector = window['extra_info' + subscid];
如果没有,我讨厌说,你被eval
:
selector = eval('extra_info' + subscid); // Blech
但请注意,如果你这样做,最好退后一步,重新评估(没有双关语!)你的设计。例如,也许您可以使用额外信息作为属性创建一个对象:
var extra_info = {
foo: "bar"
};
然后你可以查看这样的信息:
selector = extra_info[subscid];
原始答案:
从您提供的信息中很难说出来,但我想您正在寻找:
selector = extra_info[subscid];
...假设subscid
包含您要访问的extra_info
上的媒体资源名称。
在JavaScript中,您可以使用点分表示法和文字属性名称访问对象上的属性:
x = foo.bar;
...或使用括号表示法和字符串属性名称:
x = foo["bar"];
在第二种情况下,字符串可以是任何表达式的结果。例如:
b = "bar";
x = foo[b];
甚至
x = foo['b' + 'a' + 'r'];
答案 2 :(得分:-1)
要使变量像这样,
selector = extra_info+""+subscid['XXX']