在 JavaScript 闭包中加载一次 XML 文件
Loading XML file once in javascript closure
我目前正在尝试创建一个javascript闭包,它将使用我拥有的XML文件中的值创建一个下拉列表。我已经让它适用于大部分代码,并且每次我必须使用它时都会加载 XML 文件。我想使代码更有效率,并且只加载一次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'",该错误可在createField函数中找到。这是我尝试使用 xmlDoc 的第一个实例。
非常感谢有关该问题的任何帮助或教程。
既然你是 doint jQuery,为什么不在闭包中使用 jQuery呢?如果xmlDoc
undefined
,则加载它时一定有问题。尝试执行console.log
以查看执行 AJAX 后是否返回了任何数据。
var closure = (function($) {
var xmlDoc;
return {
setXML: function() {
this.loadXMLDoc("feed.xml", function(data) {
xmlDoc = data;
});
},
loadXMLDoc: function(dname, callback) {
$.get(dname, function(data) {
//a possible point of failure
//do console.log(data) to see if anything was returned
callback(data);
}, 'xml');
},
createField: function() {
x = $("name",xmlDoc);
//code to create the drop down box
},
findValue: function() {
y = $("value",xmlDoc);
//code to find value
}
};
}(jQuery));
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 每5秒用jquery/javascript读取一次XML
- 如何使用 Jquery 获取 XML 文件,并在每次加载时以随机顺序显示元素一次
- 在 JavaScript 闭包中加载一次 XML 文件
- 需要xml数据来保持每2秒POST一次,直到收到响应
- 获取按钮,显示XML文件中循环的下一次迭代