我正在尝试在 for 循环中动态创建变量。错误。我要做的是:获取 32 个文本字段的值并尝试将这些值存储到变量中。
for (i = 1; i<=32;i++){
q[i] = document.getElementById('qty[i]').value;
}
但这会产生:
错误:“q”未定义
我正在尝试在 for 循环中动态创建变量。错误。我要做的是:获取 32 个文本字段的值并尝试将这些值存储到变量中。
for (i = 1; i<=32;i++){
q[i] = document.getElementById('qty[i]').value;
}
但这会产生:
错误:“q”未定义
var q = [];
for (var i = 0; i < 32; i++){
q[i] = document.getElementById('qty[i]').value;
}
q
将包含您的所有值。您应该在 for 循环之外声明数组q
,因为这是公认的最佳实践。如果您根本不声明q
,它将成为一个隐含的全局变量,您可能希望避免这种情况。如果您q
在循环内声明,它将在每次迭代时被覆盖,因此您需要确保在外部声明它。
另外,你会注意到我改变了你的for
循环:
for(i = 1; i <= 32; i++) {
对此:
for (var i = 0; i < 32; i++){
你从 1 循环到 32;这是不正确的,因为 Javascript 中的数组是 0 索引的;换句话说,它们从零开始计数。既然是这种情况,您的for
循环也需要从零开始计数,并在 31 结束。此外,您需要i
在 for 循环中声明 var;否则,它将成为一个全局变量。
现在,如果你真的不想q
在你的 for 循环之外声明,你可以做 Kirian 演示的事情;也就是用一个if
语句判断是否q
已经声明过,如果没有声明过。看起来像这样:
for (var i = 0; i < 32; i++){
if(!q) q = [];
q[i] = document.getElementById('qty[i]').value;
}
另一个注意事项,如果qty
你的代码中有一个数组,那么你可能想要这个:
var q = [];
for (var i = 0; i < 32; i++){
q[i] = document.getElementById(qty[i]).value;
}
如果相反qty
是一组看起来像的 ID 的一部分qty[1], qty[2], qty[3]...
,那么你想要这个:
var q = [];
for (var i = 0; i < 32; i++){
q[i] = document.getElementById('qty[' + i + ']').value;
}
你有没有尝试过:
var q = [];
for (var i = 0; i < 32; i++){
q.push(document.getElementById('qty[i]').value);
}
该语法q.push(x)
将 x 附加到数组的末尾。