2012-11-27 122 views
4

我創建了一個jQuery實用程序,當您從下拉列表中選擇一個狀態時,它會自動顯示這些狀態。爲了更好地體驗用戶體驗,我添加了一些邏輯來將商店分爲三列。這在除IE以外的每個瀏覽器都能正常工作。退出循環時出現javascript錯誤

我不確定在控制檯中顯示的錯誤是否導致.change()事件不在IE中觸發的相同錯誤,但我想我會提到它。那我收到的控制檯錯誤是:

Uncaught TypeError: Cannot read property 'store_url' of undefined

下面是代碼:

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>"); 
    }  
} 

的錯誤出現只在最後「爲」塊,這使我相信,它試圖運行最後一次迭代,但沒有得到一個值,並返回爲空。如果是這種情況,我該如何解決這個問題?

+0

你能爲此創建一個[fiddle](http://www.jsfiddle.net)來演示這個問題嗎? –

回答

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

原因在於,數組索引是基於0的,所以最高索引是'length-1'。 – GolezTrol

+0

真棒,謝謝! – skevthedev

1

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

您的錯誤存在於<=。更改到<

0

在您的最後一個循環,你應該使用:

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

數據[data.length]未定義

0

應該不是你最後的去我<數據.length而不是i < = data.length