【问题标题】:Javascript loop variableJavascript循环变量
【发布时间】:2013-11-12 23:22:17
【问题描述】:

我想从文本框中获取值。我有这个 Javascript 代码:

var lines = new Array();
for (var i = 0; i < equation; i++) {
    var s = document.getElementById("row"+i).value;
    lines[i] = s;
}

在循环中我不能连接“行”和循环变量。如果我声明一个 j 变量,则串联是好的,但是当我尝试增加 j 时,它会出现错误(不运行)。

var lines = new Array();
var j = 0;
for (var i = 0; i < equation; i++) {
    var s = document.getElementById("row"+j).value;
    lines[i] = s;
    j++;
}

有什么问题?

【问题讨论】:

  • 您收到什么错误信息?乍一看,这在语法上并不错误。
  • 在编写此代码后,每个条目都是 lines 将是最后一个 row
  • 一定有其他代码未显示导致问题....这个循环是否在另一个循环中?
  • 第一个代码现在可以运行,但在循环之后没有其他代码运行(例如:alert("text");)。

标签: javascript concatenation


【解决方案1】:

您可以将条目推送到数组中,而不是使用索引定位

var lines = [];
for (var i = 0; i < equation; i++) {
    var s = document.getElementById("row"+i).value;
    lines.push(s);
    console.log(lines) 
}

并确保 equation 存在并且它是一个数字并且它不大于您的所有行#row*

【讨论】:

  • 所有这些 row# id 元素都应该存在。如果没有,他会得到TypeError: Cannot read property 'value' of null
  • @Anton,是的,这就是我的意思! “方程式”必须是所有现有行的数量或更少
  • 我可以在循环中使用 alert() 显示 s 的值,但是在循环之后,即使其他代码只是一个 alert(),其他代码行也不起作用;
  • 永远不要使用警报来调试循环,而是使用控制台日志记录,警报可能会像您描述的那样中断整个事情。更新答案
  • 问题是:如果我在这个函数之外增加方程,循环之后没有代码工作。当我不增加时,它工作正常。
猜你喜欢
  • 2021-08-11
  • 2019-01-07
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多