如何在for循环中创建变量?

时间:2012-04-26 00:22:10

标签: javascript variables for-loop

我试图在for循环中动态创建变量。错误。我想要做的是:获取32个文本字段的值并尝试将这些值存储到变量中。

for (i = 1; i<=32;i++){
   q[i] = document.getElementById('qty[i]').value;
}

但是这可能是:

  

错误:&#39; q&#39;未定义

2 个答案:

答案 0 :(得分:3)

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结束。此外,您还需要在for循环中声明var i;否则,它将成为一个全局变量。


现在,如果你真的不想在你的for循环之外声明q,你可以做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是一组看似qty[1], qty[2], qty[3]...的ID的一部分,那么您需要 this

var q = [];

for (var i = 0; i < 32; i++){
    q[i] = document.getElementById('qty[' + i + ']').value;
}

答案 1 :(得分:1)

你试过了吗?

var q = [];
for (var i = 0; i < 32; i++){
  q.push(document.getElementById('qty[i]').value);
}

语法q.push(x)将x附加到数组的末尾。