2013-09-02 7 views
2

나는 지프에 대한 브라우저 기반 서비스 설명서를 가지고 있습니다. Internet Explorer에서는 작동하지만 Firefox에서는 작동하지 않습니다. 기본적으로 하위 주제로 확장하고 드릴 다운 할 수있는 목차가 있습니다 (예 :Firefox "TypeError : 모든 [i]가 정의되지 않았습니다."

  • [+] 클러치
  • [+] 냉각
  • [+] 전기

그러나 주요 주제 옆에있는 [+]를 클릭하면 파이어 폭스가 다음과 같은 오류가 발생합니다 :

01 : 여기
TypeError: all[i] is undefined 
itcToc.js line 10 
if("UL" == all[ i ].tagName)  

는 itcToc.js의 코드

저는 정비공이므로 문제를 해결하기 위해 최선을 다했습니다. 만약 i를 10 행의 정수로 대치하면 15 행의 비슷한 if 문을 사용하여 다음 if 문에서 오류가 발생합니다.

가변 범위 문제입니까? for 문은 for 문에서 정의되었지만 if 문에서 var i를 좋아하지 않는 것 같습니다.

+1

이 코드가 작동하는 IE의 버전은 무엇입니까? –

+0

IE는'document.getElementsByTagName ("*")'에 주석을 포함 시켰습니다. 관련된? 어쨌든,'getNextULNS'의 존재는 나쁜 것처럼 보입니다. HTML은 어떤 모습입니까? – Ryan

+1

'var eCurrentUL, eCurrentLI, eUL, tempIndex, syncIndex = null;'는'syncIndex'를'null'로 설정하고 그 외에는 아무것도 설정하지 않습니다. 의도적으로 보이지는 않지만,'null '로 초기화하는 것이 일반적으로 유용합니다. – Ryan

답변

1

all[ i ]을 첫 번째 반복 작업에 사용하려면 대신 tempIndex을 유효한 숫자로 설정해야합니다. JS 룸의 친구와


var tempIndex = 0; 
예를

를 들어

, 우리는 7 ~ 10 IE 버전에 [0,1][undefined]을 시험하고 항상 우리에게 undefined했다. 따라서 오래된 브라우저에서 테스트 중이거나 질문에 누락 된 것이 있습니다.

0

tempIndex은 for 루프가 시작될 때 초기화되지 않으므로 iundefined이됩니다.

0

var i = tempIndex : tempIndex는 어디에도 정의되어 있지 않습니다. tempImgIndex이 아니라면 변수 이름이 잘못되었습니다. tempImgIndex 일 경우 var tempImgIndex = 0이 아니고 var tempImgIndex = '0'이되어야합니다.

+0

'0'은 바보 같지만 (첫 번째와 두 번째 반복에서는) 작동합니다. –

관련 문제