<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>
答案 0 :(得分: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
答案 1 :(得分:0)
尝试:
window['data1_' + keysArr[i]] = $value;
编辑: JaredPar是对的:您应该使用容器对象。
答案 2 :(得分: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;
}