2012-02-03 29 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