Как я могу использовать локальную переменную в слушателе событий? - PullRequest
0 голосов
/ 12 ноября 2010

Моя проблема связана с использованием API Карт Google, но я почти уверен, что это общая проблема JavaScript.

У меня есть локальный массив объектов, определяющих серию маркеров.Обработка этих объектов не проблема.Но я хочу использовать одно из значений в обработчике событий, который я создаю, и значение всегда «неопределено» к моменту вызова обработчика события.(Что логично, поскольку значение было частью локального массива, но я не знаю, как это решить.)

Код:

var markers = [
   { lat: 58, lng: 07, title: 'Marker 01', url: 'article.aspx' },
   .... /* etc */
]
for (var idx in markers) {
  var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng( markers[idx].lat, markers[idx].lng ), 
    title: markers[idx].title,
    map: map
  });
  google.maps.event.addListener( marker, 'click', function() {
    window.location.href = markers[idx].url;
  });
}

Когда я нажимаю наодин из маркеров в окончательной карте (т. е. вызвать слушателя 'click'), я перенаправлен на страницу с именем 'undefined', потому что атрибут 'url' больше не имеет значения.Как мне это исправить?

1 Ответ

0 голосов
/ 12 ноября 2010

Возможно, вы можете передать URL функции, которая вызывается в addListener

...