2015-02-23 33 views
0

填充我在全局數組變量沒有被從法在JavaScript

var markers=[]; 
function updateMap(data){ 
    console.log(markers); 
    if(markers.length>0) 
     { 
     for (var i = 0; i < markers.length; i++) { 
      map.removeLayer(markers[i]); 
     } 
     } 
    //location.reload(); 
    map.removeLayer(markers); 
    var lat,lon; 
    var road; 
    var detector; 
    //var svg=d3.select("#map").append("svg"); 
    //markers=[]; 
    //var count=0; 
    map.dragging.enable(); 
    data.forEach(function(d) 
      { 
    // count++; 
     lat=d.lat; 
     lon=d.lon; 
     road=d.road; 
     detector=d.detector; 
     markers.push((new L.circle([lat, lon], 200, { 
      color: 'yellow', 
      fillColor: '#f0f', 
      fillOpacity: 0.5 
     })).bindPopup("Road Name:"+road+"<br>Detector ID: "+detector)) 

      }); 
    //console.log("Total Detectors= "+count); 
    //console.log(markers); 
    for (var i = 0; i < markers.length; i++) { 
     map.addLayer(markers[i]); 
    } 
    map.setView([lat, lon],13); 
    map.dragging.enable(); 
} 
console.log(markers); 

下面的代碼我期待着在最後的console.log(標記)聲明的值。但我越來越[]。這是爲什麼發生?全局變量不是在方法內部填充的嗎?

+1

您從未調用過該方法。 – Amadan 2015-02-23 17:00:03

+0

我打電話從另一個函數在另一個地方的方法 – 2015-02-23 17:00:48

+1

的Ajax響應處理程序中可能調用它和Ajax是異步的,所以你在嘗試之前,已經從服務器 – charlietfl 2015-02-23 17:01:28

回答

1

在調用函數updateMap之前,正在運行第二次調用控制檯。調用updateMap後直接放置第二個console.log()。

+0

我已經從另一個地方打電話給第二種方法該方法 – 2015-02-23 17:01:34

+0

即使是第一的console.log(標記)還示出了[]當我從組合框中 – 2015-02-23 17:02:57

+0

我仍然的值的變化調用該方法第二次認爲第二呼叫之前的函數happing被調用。 – ktamlyn 2015-02-23 17:03:02