4

我创建了一个 jquery 实用程序,当您从下拉列表中选择一个状态时,它会自动显示状态。为了让用户体验更好,我添加了一些逻辑来将商店分为三列。这在除 IE 之外的所有浏览器中都能正常工作。

我不确定控制台中显示的错误是否与导致.change()事件在 IE 中不触发的错误相同,但我想我会提到它。我得到的控制台错误是:

未捕获的类型错误:无法读取未定义的属性“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”块中,这让我相信它试图运行最后一次迭代但没有得到值并返回为空。如果是这种情况,我该如何解决?

4

4 回答 4

6

这个:

for(var i = (check * 2); i <= data.length; i++) {

一定是:

for(var i = (check * 2); i < data.length; i++) {
       //without '=' -------^

一如既往。somearray[somearray.length]_ _ undefined

于 2012-11-27T14:36:24.600 回答
1

for(var i = (check * 2); i<= data.length; i++)

您的错误存在于<=. 将其更改为<

于 2012-11-27T14:36:54.850 回答
0

在最后一个循环中,您应该使用:

for(var i = (check * 2); i < data.length; i++)

因为 data[data.length] 未定义

于 2012-11-27T14:38:04.350 回答
0

你的最后一个不应该去i < data.length而不是i <= data.length吗?

于 2012-11-27T14:38:16.800 回答