2012-02-03 99 views
0

Js文件裏面我有一個特定算法的函數。如何在Javascript中使用jquery聲明全局變量

用於讀取xml文件並將數據轉換爲變量名稱wordData。

在函數內部具有下面的代碼行:

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

我無法設置變量「wordData作爲全局」功能或全局 外的函數

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(); 

      } 
     } 
    } 

} 

內部變量thisWord是由變量wordData生成的,該變量不是全局的。 功能之外,varible thisWord是空的 裏面的函數是可以的,它有一個值。

願意幫忙。 謝謝!

+0

我改變了我的答案,我認爲它應該更適合你 – 2012-02-03 23:50:55

回答

0

我想將其設置爲一個全局變量是不是最好的選擇,如果你想訪問wordData功能的語言裏面,你應該把它作爲一個參數,像這樣:

language(wordData); 

,並在聲明功能語言(),只是使它所以它接受參數:

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

我的代碼http://centerwow.com/ajax/ajax1/wordData.rar如果你sucasses你會看到輸入serch下面的單詞「Eric」。謝謝 – 2012-02-03 15:18:58

+0

排序的反模式,因爲這些可能很難追查,並且通常不會按照預期方式的範圍 – 2012-02-03 21:28:02

2

簡單地聲明

var wordData; 

之外的功能,改變你的線路:

wordData = xhr.responseXML.getElementsByTagName (Node1); 

因此刪除了var聲明。

1

可以使用window對象創建JS的任何地方全局變量:

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

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

然後wordData可以進行全局訪問。這可能不是您的問題的最佳解決方案,請考慮使用函數參數和返回值。

+0

不幸的是,它不起作用。如果有人能幫助我,我會欣賞thx。我的Skype中心哇 – 2012-02-03 16:21:00