2013-11-15 3 views
1

저는 동적으로 내용을 생성하는 데 사용하는 데이터를 저장하기 위해 javascript에 다차원 배열을 사용했으며 모든 웹킷 브라우저뿐만 아니라 Firefox 및 IE 9 이상에서 작동합니다.오류 : null 또는 객체가 아닙니다

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'은 말한다 : 어떤 이유로 IE 8 (내가 그것을 테스트 곳)와 IE 7은 (I 에뮬레이트 된) 나에게 다음 코드에 오류 "null의 경우, 또는하지 개체를"제공 null이거나 객체가 아니며 if 문에서 3을 참조합니다. 배열을

var data=new Array(); 

으로 선언하지 않았기 때문에 오류가 발생 했습니까? 아니면 다른 문제가 있습니까?

추가 정보 :이 코드는 jQuery의 문서 준비 이벤트에 있습니다.

+0

제공하신 코드가 올바르게 실행됩니다. 콘솔에 붙여넣고 Enter 키를 누르면 오류가 생성되지 않습니다. – Adam

+3

이 경우 'i'는 무엇입니까? 그것이 선언 되었습니까? –

답변

3

질문의 코드는 오류가 발생하지 않습니다,하지만 당신은 배열의 마지막 항목 뒤에 콤마가있는 경우, 그것은 것입니다 :

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

및 이전, 그 배열해야합니다 세 개가 아닌 네 개의 항목이 있으며 마지막 항목은 정의되지 않습니다. t3 인 경우 data[t]undefined을 반환하고 [3]을 적용하면 오류 메시지가 표시됩니다. 3은 객체가 아닌 값을 가져 오는 데 사용 된 인덱스이기 때문에 "3이 null이거나 객체가 아닙니다"라고 표시됩니다.

+0

매우 커서 이후 배열 전체를 게시하지 못했습니다. 단지 후행 쉼표를 빼는 것을 잊어 버린 것 같습니다. – LiefdeWen

+1

이전에 쉼표를 사용하지 않았지만 데이터를 정리했는데 잊어 버린 것처럼 보였습니다. 내 인생의 3 시간 동안 쉼표가 표시됩니다. 바보 같은 느낌입니다. – LiefdeWen

0

내 원래 의견은 IE7에서 실행하고 있다는 사실을 놓쳤습니다. 이 경우 대답은 잘 작동, 당신은 IE7에서 내 콘솔 특별히 "'i' is undefined"

+0

미안하지만 'i' 정의되었습니다. 그냥 게시하지 않았습니다 – LiefdeWen

+0

@ user2994389 - 게시하지 않은 항목이 있습니까? – Adam

+0

데이터 배열은 이벤트에 대한 정보입니다. 마지막 세 요소는 이벤트의 날짜이고, 'i'는 현재 달이며,'i'가 이벤트 월과 동일한 지 확인하는 데이터를 반복합니다. 동적으로 툴팁을 추가합니다. 그 '경고'는 어디에있다. – LiefdeWen

0

내가 IE7 & IE8의 배열을 테스트 말한다

i을 정의하지 않은 것입니다. "i"의 원인?

if($.type(data[t]) == 'array' && data[t][3] == i) 
관련 문제