用于循环的 Javascript 过早结束
Javascript for loop ending prematurely
我正在 dojo 中编写一个应用程序,并尝试执行以下代码:
/*for (i = 0; i < mainProperties.calendar.store.data.length; i++) {
console.log("render loop " + i);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[i]);
console.log(mainProperties.calendar.store.data.length);
}*/
mainProperties.calendar.store.put(mainProperties.calendar.store.data[0]);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[1]);
mainProperties.calendar.store.data 只是一个包含 json 元素的数组。for 循环正确运行第一个元素,将"渲染循环 0"和"2"分别记录到控制台。但是,for 循环随后结束而不执行第二次。
我运行了底部的两行代码,以确保元素本身没有问题,并且两者都正确执行。有人有什么建议吗?
顺便说一句,我正在使用这段代码在从数据库中提取元素后重新触发渲染器。这是 DojoX 日历小部件的修改版本。
(将其移至评论中的答案)。
如果不看到更多代码,很难说,但我怀疑这是一个范围界定问题。循环中的某些东西可能正在设置 i 的值,这导致您的循环提前保释。
您需要确保做的是在将使用它们的函数中声明变量。取而代之的是:
for (i = 0; i < mainProperties.calendar.store.data.length; i++) {
console.log("render loop " + i);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[i]);
console.log(mainProperties.calendar.store.data.length);
}
这样做:
var i; // <- declare here
for (i = 0; i < mainProperties.calendar.store.data.length; i++) {
console.log("render loop " + i);
mainProperties.calendar.store.put(mainProperties.calendar.store.data[i]);
console.log(mainProperties.calendar.store.data.length);
}
您还需要确保在该循环中调用的任何代码都使用变量i
具有该变量自己的声明。
有关 JavaScript 范围划分的良好答案,请参阅此问题
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 结束后Javascript倒计时计时器重定向
- 使用javascript&自定义验证器检查开始日期和结束日期
- 如何在Javascript中设置函数在上一次结束时启动
- 函数1结束后,JavaScript调用函数2
- 如何在javascript中获得给定的月份开始日期和结束日期
- Javascript渲染.如何编写Javascript;t在函数调用结束之前继续执行代码
- JavaScript-计算两个日期之间的天数(包括结束日期)
- Javascript”;结束”;函数工作不稳定
- 在JavaScript中搜索文本并获取其所有开始和结束索引
- Jqueryui dialog(“close”) 结束当前的 JavaScript 线程
- 用于循环的 Javascript 过早结束
- 如何结束 JavaScript 程序中间程序
- 为什么逃脱的单身qoute '结束 JavaScript 字符串
- 结束 JavaScript 函数
- (#601)分析程序错误:查询意外结束-Javascript FB.api
- 未捕获的语法错误:输入意外结束-Javascript错误
- 检测车轮事件结束JavaScript没有jQuery
- 我能结束JavaScript函数的无声死亡吗?(setTimeout是否会吞下异常?)
- 页面滚动到达从结束javascript的一半