2012-12-09 61 views
0

我的全局變量「數據」得到了一封郵件:JavaScript變量在控制檯日誌中未定義

[undefined × 4] 

在控制檯日誌。這應該是錯誤的,因爲我已經將4個元素推入陣列。這是代碼

var data = []; 

     ws.onmessage = function(evt){ 

     var distances = JSON.parse(evt.data); 
     console.log(distances); 
      for(var i=0; i<buffer.length; i++) { 
       if(buffer[i][0] == distances.miles) { 
        buffer[i][1][0]++; 
        } 
      }    
      console.log(buffer); 

      for (var i=0; i<buffer.length; i++) { 
       data.push(buffer[i][1][0]); 
      } 
      console.log(data); 
      draw();//redraw the graph 
      data.length=0; 
     } 

正如你可以看到數據現在應該是一個包含元素的數組。

感謝

+0

緩衝器[I] [1] [0]必須是未定義的,其中緩衝器初始化? –

+0

緩衝器被初始化爲全局的:var緩衝= [[ '1',[0]],[ '2',[0]],[ '3',[0]],[ '4',[0] ]]; – user1869421

+0

如果您將緩衝區[i] [1] [0]記錄到您將其推入數據的循環中,它的值是多少? –

回答

1

它在內存中的變量的現場表現控制檯,而你的數組的內容與data.length=0;無效。您應該在data.length=0;之前嘗試類似console.log($.clone(data));(來自jQuery)。

這是假設你絕對相信,你所期望的數據確實存在。

+0

是的,它顯示的數據沒有清除它。 – user1869421

+0

很好。考慮接受答案,如果它解決了你的問題:) – rdiazv

+0

'未捕獲的TypeError:無法讀取屬性'的ownerDocument'未定義的...我有一個問題json是bug =( – KingRider