id
,latitude
およびlongitude
を含むオブジェクト(カード)の配列があります。私は、Googleマップのマップに付加するマーカーの配列を構築しています:JavaScriptでループ内にリスナーをアタッチする
for(var c = 0; c < cards.length; c++)
{
var id = cards[c]["id"];
var lat = cards[c]["lat"];
var lon = cards[c]["lon"];
var marker = new google.maps.Marker({ position: new google.maps.LatLng(lat, lon)});
marker.setMap(map);
marker.addListener('click', function(){
myListenerCallback(id);
});
}
私はクリックイベントにコールバックを添付する各マーカーに。これは、マーカーの.addListener
メソッドを使用すると簡単に行うことができます。問題は、カードのID(入力パラメータ)を含むコールバックを発生させたいということです:myListenerCallback(id)
。すべてのコールバックが配列の最後のIDを使用して起動しているように見えます。対応するIDを渡すコールバックをどのようにして起動できますか?
OK感謝を説明については、重複記事を参照してください。クロージャーを使用することによるメモリーの影響は何ですか?ループを何度もやり直すとどうなりますか?セットが成長し続けるか、関数が新しいもので上書きされますか(同じセットのコース) –