Javascript / HTML,是否可以从循环创建变量名称

时间:2010-07-01 09:45:35

标签: javascript

想象一下,我有:<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

4 个答案:

答案 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;
};

然后你可以实例化这个对象。我认为它最终不那么复杂和可读性。