2011-11-08 40 views
0
<script> 
    var data1_1 = $value; 

    var data1_3 = $value; 

    var data1_5 = $value; 

</script> 

上述代码是正确的硬编码。 现在我想使用for循环使代码更加灵活。 但是,data1_keysArr[i] = $value上出现错误。如何添加固定变量名称并更改变量名称

任何人都可以帮助我吗?

在此先感谢!

<script> 

var keysArr = [1, 3, 5]; 

for(var i=0; i<keyArr.length; i++){ 

    data1_keysArr[i] = $value; 


} 

</script> 

回答

2

它看起来像你试图使用for循环通过构造的名称访问以前的硬编码值。如果是的话请尝试以下

var keysArr = [1, 3, 5]; 
for (var i = 0; i < keyArr.length; i++) { 
    var name = 'data1_' + keyArr[i]; 
    window[name] = $value; 
} 

我不推荐这种方法,但因为你基本上定义与此代码的需求在全球许多变数。相反,我会把它们放在一个容器对象上。例如

var parent = {}; 
var keysArr = [1, 3, 5]; 
for (var i = 0; i < keyArr.length; i++) { 
    var name = 'data1_' + keyArr[i]; 
    parent[name] = $value; 
} 

console.log(parent.data1_1); // Prints $value 
+0

这个例子将产生data1_1, data1_2和data1_3;作者希望它包含keysArr索引(1,3和5):) – Kato

+0

@Kato哎呀,纠正它 – JaredPar

0

尝试:

window['data1_' + keysArr[i]] = $value; 

编辑:而JaredPar是正确的:你或许应该使用的容器对象。

0

W3Schools有a great tutorial on arrays,你应该阅读。它会真正帮助你,因为它几乎完全符合你的例子。

本质上,当您在全局上下文中使用“var”时,您正在为窗口对象分配值。因此,你可以做到以下几点:

var keysArr = [1, 3, 5]; 
for(var i=0; i<keysArr.length; i++) { 
    window['data1_'+keysArr[i]] = $value; 
} 

然而,这将是更正确使用您的值的数组(参见教程明白这一点):

var i, key, 
    keysArr = [1, 3, 5], 
    data = []; 

for(i=0; i < keysArr.length; i++) { 
    key = keysArr[i]; 
    data[key] = $value; 
} 
+0

W3Schools **不是** W3C。请看http://w3fools.com/看看他们为什么不好。 –

+0

@Felix - 感谢您的纠正;在这种情况下,我认为这个问题仍然简单而简洁地回答了这个问题。 – Kato