退出循环时出现javascript错误

时间:2012-11-27 14:34:38

标签: javascript for-loop onchange

我创建了一个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。如果是这种情况,我该如何解决这个问题?

4 个答案:

答案 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