想象一下,我有:<div id names>142,140,150</names>
我可以(在Javascript中)编写一个声明变量名称的forloop,并附加这些值,即
var list = document.getElementById('names').innerHTML.Split(',');
for(i=0; i<list.Length; i++){
var 'beginning' + list[i];
}
所以我基本上想要创建:
var beginning142 var beginning140 var beginning150
答案 0 :(得分:7)
你的确可以:
window['beginning' + list[i]] = 'value';
有趣的巧合,我在这个问题发生前10秒回答了一个非常密切相关的问题,然后我用这个作为例子。所以a more elaborate explanation on why this works is available here。
答案 1 :(得分:5)
您可以这样做:
for(var i = 0; i<100; i++)
{
eval("var beginning"+i);
}
对于害怕来自eval的开发者这是一篇关于eval以及它不是邪恶的好文章之一:http://www.nczonline.net/blog/2013/06/25/eval-isnt-evil-just-misunderstood/
我不是说你应该跑出去并开始使用eval() 到处。实际上,运行的用例很少 eval()。代码清晰度肯定存在问题, 可调试性,当然还有不容忽视的性能。 但是当你遇到案件时,你不应该害怕使用它 eval()很有意义。尽量不要先使用它,但不要让任何人吓唬 你认为你的代码在eval()时更脆弱或更不安全 使用得当。
答案 2 :(得分:3)
由于声誉得分低,我无法为您的问题添加评论 - 这不是答案,而是建议。 我认为用你的密钥142,140,150创建单个数组会更好......
答案 3 :(得分:3)
为什么不定义一个将这些值作为属性的对象。
例如:
var myVariable = function(id, value){
this.Id = id;
this.Value = value;
};
然后你可以实例化这个对象。我认为它最终不那么复杂和可读性。