2014-01-30 38 views
0

我想強調的側邊欄,上標記的點擊谷歌地圖API的地方,我怎麼能得到標記的[I]中的addListener

google.maps.event.addListener(markers[i], "click", function() { 
    var viewListLink="trID"+i; 
    document.getElementById(viewListLink).style.background="#ff0099"; 
} 

的TR有一個id =「論壇報」 +我

控制檯總是給我最後一個trID20。

如何獲得每個標記的i?

類似:

this.get 

但如何?

編輯:

打開的信息窗口不起作用標記點擊:getDetails(placesArr [I],i)的;

places.search(search,function(placesArr,status,pagination){ 
    (function(i) { 
     google.maps.event.addListener(markers[i],"click",function(){ 
     getDetails(placesArr[i],i); 
      var viewListLink = "trID"+i; 
      document.getElementById(viewListLink).style.background = "#ff0099"; 
     }); 
    })(i); 
}); 

我試圖通過placesArr [I]回匿名函數

(function(placesArr,i) { 

內,但它不工作,

(function(placesArr,i) { 

這既不

這裏getDetails功能:

function getDetails(place,i){ 
    return function(){ 
     places.getDetails({ 
      reference:place.reference 
     },showInfoWindow(i)); 
    } 
    } 

這裏showInfoWindow功能:

function showInfoWindow(i){ 
    return function(place,status){ 
     if(!!iw && iw._iwId == i){ 
     iw.close(); 
     iw = null; 
     }else{ 
     if(iw){ 
      iw.close(); 
      iw = null; 
     } 
     if (status == google.maps.places.PlacesServiceStatus.OK){ 
     iw=new google.maps.InfoWindow({ 
      content:getIWContent(place), 
      _iwId:i 
     }); 

     if (place.reviews && place['reviews'].length){ 
      showReviews(place.reviews); 
     }else{ 
      document.getElementById('theReviews').innerHTML = 'no reviews'; 
      toggle_off('reviewsPanel'); 
      toggle_off('theReviews'); 
    } 
     iw.open(map,markers[i]); 
     // showReviews(place.reviews); 
     } 
    } 
    } 
} 
+0

的可能重複[關閉的Javascript內循環 - 簡單實用的例子(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Andy

+2

你不」您需要將標題更改爲已解決,只需標記正確答案即可。如果您使用了不同的解決方案,請發佈該答案並對其進行標記。 – lincolnk

回答

1

我假設你遇到了變量的作用域的問題,要解決這個問題,你可能需要更換您的代碼:

(function(i) { 
    google.maps.event.addListener(markers[i], "click", function() { 
     var viewListLink="trID"+i; 
     document.getElementById(viewListLink).style.background="#ff0099"; 
    }); 
})(i); 
+0

嗨,我不管理在新功能裏面定義placesArr。我編輯了原文。 – Sebastian

+0

@Sebastian你能告訴我們'getDetails'函數代碼嗎? – antyrat

+0

嗨,我剛更新它; o) – Sebastian

1

這是關於範圍。

(function(i) { 
    google.maps.event.addListener(markers[i],"click",function() { 
     var viewListLink = "trID"+i; 
     document.getElementById(viewListLink).style.background = "#f09"; 
    }); 
})(i); 
+0

非常感謝,解決了這個問題,我真的很感謝 – Sebastian

+0

@Niet the Dark Absol嗨,我不管理在新函數裏面定義placesArr。我編輯了原文。 – Sebastian

相關問題