2013-04-02 2 views
0

주어진 id 패턴의 범위를 반환하는 메서드가 있습니다. 이 배열은 생성되고 함수의 끝에서 배열의 값을 출력하여 테스트 할 때 모든 적절한 요소가 나타납니다. 함수 범위 배열 만들기 항상 반환 정의되지 않음

는 기능입니다 :

function getAllSpansForID(sectionID) { 
    var foundAllSpans = false, 
     i = 1, 
     spanID, 
     span, 
     spanArray = new Array(); 

    /* Keep looking until we found all the selection spans.*/ 

    while (!foundAllSpans) { 
     spanID = sectionID + "-" + i; 
     span = document.getElementById(spanID); 

     /* 
     If we didn't get a span we can assume there are no more to find. 
     We are done with this loop. 
     */ 
     if (span == null) { 
      foundAllSpans = true; 
      console.log("Found all spans."); 
     } 

     /* 
     Else, add the span to the array we are going to return. 
     */ 
     else { 
      spanArray[i-1] = span; 
      i++; 
     } 
    } 

    console.log("returning spanArray.length: " + spanArray.length); 
    for (i = 0; i < spanArray.length; i++) { 
     console.log("spanArray[i].id: " + spanArray[i].id); 
     console.log("spanArray[i].outerHTML: " + spanArray[i].outerHTML); 
    } 

    return spanArray; 
} 

내 문제는 내가이 함수를 호출 할 때마다 반환 값은 항상 정의되지 않은 것입니다.

이 코드 : 때문에 범위 지정 문제 그러나 나의 정확한 상황에 맞게 없음으로 내가 returnign 배열을 SO에 많은 유사한 문제를 발견

Uncaught ReferenceError: spansArrray is not defined 

:

var spansArray = getAllSpansForID(verseID), 
length = spansArray.length; 

항상이 오류가 발생합니다. spanArray.push(span)spanArray.push.apply(spanArray, span)을 사용하여 내 기간을 추가하는 방법을 포함하여이 방법을 변경하려고 시도했지만 아무 소용이 없습니다. 나는 아이디어가 없다.

+3

왜 기능입니다 한 번 getAllSpansForID라는 이름이 붙고 다른 하나는 getAllSelectionSpansForVerse입니까? 정말 같은가요? –

+2

'spanArray! == spansArrray' – Andreas

+4

@Andreas 그들은 함수 안에서'spanArray'라고하고, 외부에서는'spansArray'라고 부릅니다. 그래서 괜찮을 것입니다. – Xymostech

답변

1

:

Uncaught ReferenceError: spansArrray is not defined 
           ^^^ 

하지 당신이 여기에 게시 코드에 있지만 실행 한 다른 오타 것 같다 ...

0

변화 :

var spansArray = getAllSpansForID(verseID); 
var length = spansArray.length; 
+0

차이점이 없습니다. – Bergi

+0

내 코드를 복사하고 시도하십시오. 차이가 있어야합니다! –

+0

좋아요, 그건 OP의 오타도 수정합니다 :-)하지만 그의 질문에 게시 한 것과 기능적 차이는 없습니다. – Bergi

0

D' OH!

내 오류 메시지에서 알 수 있듯이 spansArrray (3)은 정의되지 않았습니다. 나는 spansArray (2 r 's)을 정의했다. 나는 고쳤고 모든 것이 잘 작동한다. 그냥 오타가 ....

나는 코드에서 곧바로 length = spansArray.length;을 들어 올리지 않고 오히려 그것을 썼다. 그래서 여기에 게시 된 코드는 실패하지 않을 것이다.

죄송합니다. 모든 도움을 주셔서 감사합니다. 내가 너무 많은 r를 발견 할 수있는 오류 메시지에서

관련 문제