2012-02-03 2 views
0

내부의 Js 파일 특정 알고리즘을 가진 함수가 있습니다.Jquery를 사용하여 Javascript에서 전역 변수를 선언하는 방법

XML 파일을 읽고 변수 이름 인 wordData로 변환합니다.

var wordData = xhr.responseXML.getElementsByTagName (Node1); 

나는 기능

function language() { 
    lang = "heb"; 
    if (lang == "heb") { 
     thisWord = wordArrayHeb[indeXML]; 
    } 
    else { 
     thisWord = wordArrayEng[indeXML]; 
    } 
    alert("language thisWord:=" + thisWord); 
} 


function setWord() { 

    if (xhr.readyState == 4) { 
     if (xhr.status == 200) { 
      if (xhr.responseXML) { 
       var wordData = xhr.responseXML.getElementsByTagName(Node1); 
       XMLength = wordData.length; 
       for (i = 0; i < XMLength; i++) { 
        wordArrayHeb[i] = wordData[i].getElementsByTagName(Node2)[0].firstChild.nodeValue; 
        wordArrayEng[i] = wordData[i].getElementsByTagName(Node3)[0].firstChild.nodeValue; 
       } 
       language(); 

      } 
     } 
    } 

} 

내부 기능 또는 글로벌 외부 변수 "글로벌로 wordData"를 설정할 수 없습니다 : 함수 내부

는 다음 코드 줄을이 변수 thisWord는 전역 변수가 아닌 varible wordData에서 영향을받습니다. 함수 바깥쪽에는 변수 thisWord가 비어 있습니다. 함수 내에있는 은 ok이며 값이 있습니다.

도움이 필요하십니까? 감사합니다.

+0

내 대답이 바뀌 었습니다. 더 잘 맞아야한다고 생각합니다. –

답변

0

전 세계 VAR로 설정하면이 기능 언어 안에 wordData에 액세스하려는 경우, 당신은 매개 변수 때문에 등을 통과해야, 최선의 선택 아니라고 생각 :

language(wordData); 

및 선언 함수 언어()는 매개 변수를 받아, 그래서 그냥합니다

function language(wordData) { 
... 
} 
+0

내 코드 http://centerwow.com/ajax/ajax1/wordData.rar 당신이 수크로 인 경우 입력 된 serch 아래에 "Eric"이라는 단어가 표시됩니다. 감사합니다 –

+0

반 패턴의 일종은 추적하기가 더 어려울 수 있고 대개 의도 된 방식대로 범위를 좁힐 수 없기 때문에 불행히도 작동하지 않습니다. –

2

단순히 선언

var wordData; 

을 함수 바깥으로 바꾸고 줄을 다음으로 변경하십시오.

wordData = xhr.responseXML.getElementsByTagName (Node1); 

따라서 var 선언을 제거하십시오.

1

당신은 창 개체를 사용하여 어디서든 JS 글로벌 VAR를 만들 수 있습니다

window.wordData = xhr.responseXML.getElementsByTagName(Node1); 

window['wordData'] = xhr.responseXML.getElementsByTagName(Node1); 

또는

그런 다음 wordData 전 세계적으로 액세스 할 수 있습니다. 이것은 당신의 문제에 대한 최선의 해결책이 아닐 수도 있습니다. 함수 인자와 리턴 값을 대신 사용해보십시오.

+0

어떤 사람이 나를 도울 수 있으면 plz 나는 thx을 평가할 것이다. 내 skype centerWow –

관련 문제