さて、これはおそらく「値渡し」と参照渡しの問題であるため、おそらく恥ずかしい質問です。Google Maps JavaScript API v3を使用していて、独自のカスタムマップマーカーを設定しようとしています。各マーカーは、緯度、経度、およびその場所に関する「コメント」のある場所に対応し、配列内のオブジェクトとしてエンコードされます。ただし、ループ内でマーカーを設定することは問題ありませんが、場所に関するコメントを使用して別のdivを動的に更新するトリガーを作成するリスナーを作成しても、機能していないようです。
var myList = [ { lat: ..., lon: ..., title: ..., comment: ... }, { object repeats } ];
for (var i = 0; i < myList.length; i++) {
// bunch of code setting up the marker
var myMarker = new google.maps.Marker...
google.maps.event.addListener(myMarker, 'click', function()
{
$('myDiv').empty().append(myList[i].comment);
}
これで、addListenerの無名関数内のコードを除いてすべてが機能します。.commentは値ではなく参照によって渡されるようですが(これは理にかなっています)、ループがロケーション配列の最後のインデックスを通過するときに.append()は何も追加しないという効果があります。 .appendは、nullまたは未定義の値を空にしようとしていると呼ばれます。これを修正する方法についての洞察はありますか?