作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 for 循环中动态创建变量。错误。我想要做的是:获取 32 个文本字段的值并尝试将这些值存储到一个变量中。
for (i = 1; i<=32;i++){
q[i] = document.getElementById('qty[i]').value;
}
但这会产生:
Error: 'q' is undefined
最佳答案
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
是一组 ID 的一部分,看起来像 qty[1]、qty[2]、qty[3]...
,那么您想要这个:
var q = [];
for (var i = 0; i < 32; i++){
q[i] = document.getElementById('qty[' + i + ']').value;
}
关于javascript - 如何在 for 循环中创建变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325651/
我是一名优秀的程序员,十分优秀!