2017-06-16 32 views
1

這裏是我的代碼:傳遞一個數組值的的addListener功能

function myMap() { 

var sensorID = []; //Sensor ID array 

//More Code 

for (var i = 0; i<sensorID.length; i++){ 
    sensorNodes[i] = new google.maps.LatLng(sensorLatitude[sensorID[i]], sensorLongitude[sensorID[i]]); //No problem here 

    marker[i] = new google.maps.Marker({ position:sensorNodes[i] }); //No problem here 

    google.maps.event.addListener(
     marker[i],'click',function(){ 
     infowindow.setContent("Sensor ID: " + sensorID[i]); 
     infowindow.open(map,this); 
     } 
    ); 
} 

在代碼的最後一個塊,嵌套的addListener內部的功能應該打開一個盒子,感應式ID說:#

但是,該函數內部的SensorID [i]存在問題。代碼不會讓我把數組傳遞給函數。有沒有解決這個問題的方法?我如何將SensorID [i]傳遞給函數()?

回答

1

由於回調函數僅在循環結束後才執行,所以i將繼續。爲避免這種情況,請在for構造中使用let i而不是var i:這將爲每次迭代創建一個單獨的i變量。