【问题标题】:Function won't progress past the end of the for loop函数不会超过 for 循环的结尾
【发布时间】:2017-06-13 20:22:29
【问题描述】:

我确信这里缺少一些简单的东西。这部分代码在我网站的客户端:

function test(){
var insert;
var insertArray = [];
var arrayLength = document.getElementById("arrayLength").value;
var length = parseInt(arrayLength)
var o;
var int;
var insertID
var i;


for (i = 0; i<=length; i++){
   int = i.toString();
   insertID = "insertNumber" + int;
   insert = document.getElementById(insertID).value;
   insertArray.push(insert);
};

o = JSON.stringify(insertArray);

google.script.run.withSuccessHandler(successDisplay)
  .mailroomDataEntry(o);

}

循环按应有的方式工作,但函数似乎没有超出循环的末尾。没有数据被传回服务器端。

例如,如果我将 window.alert(insertArray) 放在 for 循环中,我会得到预期的结果(即,每次循环进行时都会出现一个警报框,直到最后一个框具有完整的数组。

但是,如果我在 for 循环关闭后放置相同的 window.alert,我什么也得不到。根本没有警告框。

【问题讨论】:

  • 它会抛出任何控制台错误吗?您确定length 是您期望的值吗?
  • 我开始说长度正是我所期望的,因为它是 93 并且当前数组中有 93 个项目...然后我意识到对于 93 个项目,我实际上需要 92为长度的值。更改: var length = parseInt(arrayLength) 到 var length = parseInt(arrayLength)-1 并且工作正常。非常感谢你的帮助。我确信这很简单!
  • 在你的变量定义下放一个try{,最后} catch(e) {console.log('There was an error: ' + e.message)}变量insertArray可能不是有效的JSON。但是,知道发生了什么的唯一方法是进行一些调试。对于 Chrome 和 Firefox,按 f12 键打开浏览器控制台。
  • 元素 ID 是从 insertNumber0 还是 insertNumber1 开始?

标签: javascript arrays loops for-loop google-apps-script


【解决方案1】:

感谢 samanime,我意识到变量 length 的值不正确。

更改:

for (i = 0; i<=length; i++)

for (i = 0; i<length; i++)

它工作得很好。谢谢 samanime!

**根据 Lars de Bruijn 的评论编辑。感谢 Lars de Bruijn。

【讨论】:

  • 可能更简洁的解决方案是将您的 for 循环重写为 for (i = 0; i &lt; length; i++) { 而不是从长度中减去。注意&lt;“小于”而不是&lt;=“小于或等于”
  • 我会这样做的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 2020-06-09
  • 2013-07-18
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
相关资源
最近更新 更多