gpt4 book ai didi

javascript - 如何通过由另一个方法填充的方法访问对象的成员?

转载 作者:行者123 更新时间:2023-11-30 18:20:31 25 4
gpt4 key购买 nike

我知道标题有点困惑,这里是详细信息:

假设我在 javascript 中定义了一个自定义对象,并且其中定义了一个公共(public)成员:

 function Test()
{
this.testArray = [];
}

对于这个对象我有两种方法,一种是读出一些xml文件并填充到数组中:

 Test.prototype.readXML = function()
{
var self = this;
$.get('assest/xml/mydata.xml', function(d){
$(d).find("item").each(function(){
var item = new Item;
item.ID = ($(this).attr("ID"));
item.body = ($(this).find("body").text());
});
self.testArray.push(item);
});
}

还有另一个函数,它将内容显示到 HTML 页面中。

  Test.prototype.appendInfo = function()
{
var i;
for (i=0; i<testArray.length;i++)
{
$('#testdisplay').append(testArray[i].ID +"<br />");
$('#testdisplay').append(testArray[i].body = "<br /");
}
}

但是,显示函数继续给我错误,未定义 testArray。我不确定问题出在哪里,因为我把显示功能放在了阅读功能后面。我希望数据将存储在数组中,并且可以在需要时随时访问。

希望有人能帮我解决这个问题!谢谢你! }

最佳答案

所以我注意到您的代码有两个问题。

首先,当您执行 ajax 调用时,您需要将延迟传递回给用户。由于 ajax 调用是异步的,因此它可能不会立即完成。

所以您的 readXML 函数应该执行此操作。它应该返回 jquery get。

Test.prototype.readXML = function() {
var self = this;
return $.get('assest/xml/mydata.xml', function(d){
$(d).find("item").each(function(){
var item = new Item;
item.ID = ($(this).attr("ID"));
item.body = ($(this).find("body").text());
});
self.testArray.push(item);
});
}

接下来,您的第二个函数追加只是缺少一些上下文。

Test.prototype.appendInfo = function() {
var i;
for (i=0; i<this.testArray.length;i++) {
$('#testdisplay').append(this.testArray[i].ID +"<br />");
$('#testdisplay').append(this.testArray[i].body = "<br /");
}
}

所以你的代码应该是这样的。

var mytest = new Test();

mytest.readXML().done(function(){
mytest.appendInfo();
}).fail(function(){
// put some fallback code here
});

更新:添加了额外的 this's。

关于javascript - 如何通过由另一个方法填充的方法访问对象的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12146680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com