2013-11-15 79 views
1

我在javascript中使用了一個多維數組來存儲我用來動態生成內容的數據,並且它在任何webkit瀏覽器以及firefox和IE 9中都可以正常工作,但對於某種原因IE 8(其中i測試它)和IE 7(我仿真)使我對下面的代碼的錯誤「爲空或不是對象」:錯誤:爲空或不是對象

var data = 
     [ 
     ["A","X",[5,6],3,2014], 
     ["V","L",[9,10],4,2014], 
     ["X","N",[10,11],6,2014] 
     ]; 
for(var t=0;t<data.length;t++){ 
    if(data[t][3]==i){ 
    alert("Found"); 
    } 
} 

錯誤特別說「3」是null或不是對象,並引用if語句中的3。錯誤可能是因爲我沒有聲明陣列爲

var data=new Array(); 

還是有另一個問題?

附加信息:此代碼位於jQuery的文檔準備事件中。

+0

您提供的代碼片段運行良好。將其粘貼到您的控制檯中,按回車,您將看到沒有錯誤產生。 – Adam

+3

在這種情況下'i'是什麼?它是否被宣佈? –

回答

3

在問題的代碼不會產生錯誤,但如果你有數組中的最後一個項目之後,後面的逗號,它會:

var data = 
    [ 
    ["A","X",[5,6],3,2014], 
    ["V","L",[9,10],4,2014], 
    ["X","N",[10,11],6,2014], 
    ]; 
for(var t=0;t<data.length;t++){ 
    if(data[t][3]==i){ 
    alert("Found"); 
    } 
} 

在IE8和更早的版本,該數組將有四項而不是三項,最後一項將是未定義的。當t3時,data[t]將返回undefined,並將[3]應用於該錯誤消息。它表示「'3'爲空或不是對象」,因爲3是您用來獲取不是對象的值的索引。

+0

我沒有發佈整個數組,因爲它非常大,似乎我只是忘記了尾隨的逗號。 – LiefdeWen

+1

沒有想到之前沒有拖尾的逗號,但我安排了數據,似乎我忘記了那個,我的生活中有3個小時逗號,我覺得很愚蠢。 – LiefdeWen

0

我原來的評論錯過了你在IE7中運行這個事實。在這種情況下,答案是你還沒有定義i

我在IE7控制檯特別說"'i' is undefined"

+0

對不起,但'我'被定義我只是沒有發佈它 – LiefdeWen

+0

@ user2994389 - 你沒有發佈的其他東西? – Adam

+0

數據數組是關於事件的信息最後3個元素是事件的日期,'i'是當前月,循環數據我檢查'i'是否與事件月相同,我動態添加工具提示那裏'警報'是。 – LiefdeWen

0

我測試在IE7 & IE8的陣列,它工作正常。 「我」的原因?

if($.type(data[t]) == 'array' && data[t][3] == i) 
相關問題