我知道標題是有點混亂,這裏是詳細信息:如何通過其他方法填充的方法訪問對象的成員?
說我有在JavaScript中定義的自定義對象,並且在它定義的公共成員:
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。我不確定問題在哪裏,因爲我將顯示功能放在了閱讀功能的後面。我期望數據將被存儲在數組中,並且可以隨時在需要時訪問它們。
希望有人會幫助我這個!謝謝! } }
你錯過了幾個'this's – Eric
謝謝@arhea 。你的方法奏效!但是我仍然有點困惑。這個解決方案意味着如果我想使用ajax的功能,我必須調用任何需要訪問讀取和存儲的數據通過ajax函數調用內部ajax傳輸的方法?就像你在代碼的最後一塊顯示我一樣。有沒有辦法,讓程序完成閱讀,比做其他工作,並把存儲變量作爲一個正常的本地靜態變量? – Arthur0902
沒有ajax調用是異步的。 Javascript將繼續。這就是爲什麼需要等待ajax調用完成的所有代碼都需要在回調中。我鼓勵你閱讀所有關於jQuery Deferreds – arhea