請原諒尷尬的標題我會盡我所能解釋我的特殊問題。(js)引起代碼工作的Firebug調試
我有JavaScript代碼的三位:
- 一些自執行代碼,調用我個人的Ajax功能,並將其傳遞一個回調。
- 檢索數據的ajax函數本身會調用傳遞數據的回調函數。
- 回調本身,它接收數據並將其解析爲長度爲的數組。
需要注意的是自執行代碼和回調函數是在它們自己的閉包中定義的。 ajax函數通過導入的命名閉包進行訪問,我定義爲$。
我對JavaScript很新,我仍然在學習關閉和範圍。我有理由相信這個問題可能與此有關。
無論如何,我的問題涉及到試圖訪問那個被認爲是人口稠密的數組。因爲我將數組定義在合適的範圍內(或者我相信)作爲解析函數,所以我認爲我應該沒有問題將項目插入它。
這是自exectuting:
(function ($){
//Load stock
var items = [];
var response = $.Ajax("scripts/Lookup.php","GET",parse);
function parse(a){
for(/*Simplified view*/){
var item = new $.Item();
item.name = domStuff.textContent;
item.description = domStuff.textContent;
item.price = domStuff.textContent;
item.id = domStuff.textContent;
items.push(item);
}
}
//Test the length (and verify contents)
for(var i=0; i < items.length; i++){
alert(items[i].price);
}
}($));
這是我的定義,其中包括Ajax的功能:
var $ = (function(){
var s = {};
var ajax = function(url,method,callback){
var a = new XMLHttpRequest();
a.open(method, url, true);
a.onreadystatechange = function(){
if(this.readyState==4){
callback(a);
}
}
a.send();
};
s.Ajax = (function(){
return ajax;
}());
return s;
}());
那麼證明標題是,當我探頭代碼螢火蟲,我可以看到項目填充了3個由解析數據正確定義的對象。
循環然後按預期發出3次警報。
但是,如果我刪除中斷點,並有螢火蟲忽略代碼,然後循環不會播放,我只能假設數組是空的。
如果我在測試循環之前提醒(項目),代碼也有效。
我在哪裏可以找到這個特殊版本的Firebug? – KooiInc 2011-04-20 17:01:29
如果看起來像代碼同步問題。使用Firebug Alert時發生的唯一變量是延遲。看起來延遲會讓您的一些代碼的呼吸時間完成。 (我還沒有完全分析過你的代碼,但這是我第一件事)。 – 2011-04-20 17:03:58