如何使用Jquery在Javascript中声明全局变量

时间:2012-02-03 14:28:00

标签: javascript ajax

Js文件里面我有一个特定算法的函数。

用于读取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受varible wordData影响,而不是全局的。 在函数之外,varible thisWord是空的 函数内部正常,它有一个值。

愿意帮忙。 谢谢!

3 个答案:

答案 0 :(得分:2)

简单声明

var wordData;

在函数外部并将您的行更改为:

wordData = xhr.responseXML.getElementsByTagName (Node1);

因此删除了var声明。

答案 1 :(得分:2)

您可以使用window对象在JS中的任何位置创建全局变量:

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

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

然后可以全局访问wordData。这可能不是解决您问题的最佳方案,请考虑使用函数参数并返回值。

答案 2 :(得分:0)

我认为将其设置为全局var并不是最佳选择,如果您希望在函数语言中访问wordData,则应将其作为参数传递给它:

language(wordData);

并在声明函数语言()时,只需使它接受参数:

function language(wordData) {
...
}