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是空的 函数内部正常,它有一个值。
愿意帮忙。 谢谢!
答案 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) {
...
}