0
我目前正在尝试创建一个javascript闭包,该闭包将使用我所拥有的XML文件中的值创建一个下拉列表。我已经为大部分代码工作,并且每次必须使用它时都会加载XML文件。我想让代码更高效,但只加载一次XML文件。我试图使用下面的代码来做到这一点,但不断收到错误。在javascript关闭中加载一次XML文件
这是我对封闭的代码...
var closure = function() {
var xmlDoc;
return{
setXML: function()
{
xmlDoc = this.loadXMLDoc("feed.xml");
},
loadXMLDoc: function(dname)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",dname, false);
xhttp.send();
return xhttp.responseXML;
},
createField: function()
{
x = xmlDoc.getElementsByTagName("name");
//code to create the drop down box
},
findValue: function()
{
y = xmlDoc.getElementsByTagName("value");
//code to find value
}
};
}();
这是调用函数的代码...
$(document).ready(function() {
closure.setXML();
});
我得到的错误是“不能调用方法'getElementsByTagName'的undefined',它可以在createField函数中找到。这是我尝试使用xmlDoc的第一个实例。
任何关于这个问题的帮助或教程是非常感谢。
我试过实现这个,但回来的错误'回调是未定义'。它似乎工作,因为console.log(数据)返回所有的XML数据。 – Phil 2012-04-27 09:18:53
@Phil [似乎在这里工作](http://jsfiddle.net/vC8ZQ/)。 'callback'是调用'loadXMLDoc'时传递的函数。如果完全没有回调,它只能是'undefined'。 – Joseph 2012-04-27 09:27:29
对不起,我错过了部分代码,我总是尝试使用自己的代码来修改代码,而不是仅仅复制和粘贴,因为我想了解它是如何工作的......非常感谢 – Phil 2012-04-27 09:37:26