为什么这个JavaScript代码在布尔表达式不再为true之后进入for循环
Why is this JavaScript code entering a for loop after the boolean expression is no longer true?
编辑:这是Firebug错误地执行代码的情况,而我的bug在其他地方。一位看到类似行为的同事表示,定期清除浏览器缓存会有所帮助。
我有一个简单的函数,它可以拆分逗号分隔的字符串,并使用令牌填充Dojo数据存储:
UpdateFileNames: function(names) {
var fileNames = names.split(",");
var fileNameData = [];
for (var i = 0; i < fileNames.length; i++) {
fileNameData.push({ name: fileNames[i], id: fileNames[i] });
}
this.fileListStore = new dojo.store.Memory({ data: fileNameData });
}
我正在Firebug中遍历这段代码,简直不敢相信我看到的。一切都很愉快,直到i == fileNames.length
,此时循环被再次输入,fileNames[i]
无效。
这是怎么回事?
names
是否以逗号结尾如果是,则为fileNames[fileNames.length - 1] == ''
。
- 概念证明
你试过少循环一次吗?
for (var i = 0; i < fileNames.length-1; i++) {
fileNameData.push({ name: fileNames[i], id: fileNames[i] });
}
如果这有效的话,你需要看看你是如何生成你的列表(名字)的。这样你就不会在结尾处得到空白元素。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 在chrome.tabs.onCreated之后加载HTML页面
- 在Jquery detachment()和appendTo()之后定位元素
- AngularJS:ng之后,重复$scope值未按预期更新
- AngularJS-使用'true'属性
- 为什么元素的宽度在页面加载之后和那一刻之后不同
- 没有在Angular应用程序中定义firebase(在firebase迁移之后)
- Javascript复选框函数:;缺少:在属性id之后"
- JavaScript-切换“;全部检查”;复选框true/false
- location.reload(true)崩溃浏览器选项卡
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- 在$state.go之后执行$window.location.reload(true)
- 延迟似乎不会在元素上的 Stop(true, true) 之后延迟
- 为什么这个JavaScript代码在布尔表达式不再为true之后进入for循环
- 在windows .location.reload(true)之后,URL重定向在IE11中没有发生
- parsleui . adderror之后,Parsley.js的远程验证响应仍然验证为true
- 为什么在这个内联事件处理程序之后使用return false和return true ?
- innerHTML在改变输入值之后不被更新(checked=true/false/“checked”)