2010-01-27 41 views
2

我現在有一個非常奇怪的問題。對象屬性的奇怪問題 - 出現在循環外部,缺少循環內部

markers是一個對象數組。

0 
    content (String) 
    coords (Object) 
    gMarker (Object) 
1 
    content (String) 
    coords (Object) 
    gMarker (Object) 
2 
    content (String) 
    coords (Object) 
    gMarker (Object) 

到目前爲止,這麼好。

問題:

console.dir(markers); 
/** 
* output as expected 
*/ 
for(var i in markers) { 
    console.dir(markers[i]); 
    /** 
    * gMarker object is missing! 
    * markers[i] suddenly consists just of content and coords 
    */ 

怎麼可能?

編輯:它必須有一些與谷歌地圖的「加載」回調函數有關。至少在我的情況下,它有點太早了。我用一個簡單的setTimeout替換了回調函數(GEvent.addListener(map,「load」,callback_fn)),它在2秒後觸發我的回調函數,現在一切正常。

無論哪種方式,這並不能解釋爲什麼gMarker屬性在for循環中不可用,甚至不能成爲競爭條件,因爲循環在對象仍然正常的那一點之後立即開始。

+0

did you try console.dir(markers [0]); console.dir(標記[1]); console.dir(標記[2]); ?我想問題是(var我在標記) – Tommy 2010-01-27 09:44:13

+0

不幸的是,這沒有什麼區別。我也嘗試過(var i = 0; i Alex 2010-01-27 09:49:19

+0

你可以試試firebug 1.5和console.log嗎? – Tommy 2010-01-27 09:59:46

回答

0

難道不該

for(var i in markers) { 
    console.dir(i); 
+0

我只是當前的索引。 – Alex 2010-01-27 10:00:47

0

這很奇怪,我的螢火蟲console.dir甚至不能換在一個陣列上運行。

它可能與i是其他地方設置的全局變量有關,但由於該屬性在以後的某個時間點被加載,因此很可能會調用這個變量。你是手動設置對象,還是如何加載?

for (var i=markers.length;i--;){ 
    console.dir(markers[i]); 
}