我创建了一个jquery实用程序,当您从下拉列表中选择一个状态时,它会自动显示状态。为了提高用户体验,我添加了一些逻辑来将商店划分为三列。这在除IE之外的每个浏览器中都能正常工作。
我不确定控制台中显示的错误是否导致.change()
事件在IE中没有触发的错误,但我想我会提到它。我得到的控制台错误是:
未捕获的TypeError:无法读取未定义的属性“store_url”
以下是代码:
else if (store_remainder === 0) {
for(var i = 0; i < check; i++) {
store_col_1.append("<li class='current_store'><a href='" + data[i].store_url + "'>" + data[i].store_name + "</a></li>");
}
for(var i = check; i < (check * 2); i++) {
store_col_2.append("<li class='current_store'><a href='" + data[i].store_url + "'>" + data[i].store_name + "</a></li>");
}
for(var i = (check * 2); i <= data.length; i++) {
store_col_3.append("<li class='current_store'><a href='" + data[i].store_url + "'>" + data[i].store_name + "</a></li>");
}
}
错误只出现在最后的“for”块中,这让我相信它会尝试运行最后一次迭代,但是没有获得值并返回null。如果是这种情况,我该如何解决这个问题?
答案 0 :(得分:6)
此:
for(var i = (check * 2); i <= data.length; i++) {
必须是:
for(var i = (check * 2); i < data.length; i++) {
//without '=' -------^
somearray[somearray.length]
总是 undefined
。
答案 1 :(得分:1)
for(var i = (check * 2); i<= data.length; i++)
中的
您的错误存在于<=
中。将其更改为<
答案 2 :(得分:0)
在最后一个循环中,您应该使用:
for(var i = (check * 2); i < data.length; i++)
因为数据[data.length]未定义
答案 3 :(得分:0)
不应该是你的最后一次去我&lt; data.length 而不是 i&lt; = data.length ?