У меня есть куча маркеров, и я хочу добавить обработчик наведения мыши к каждому из них. Я перебираю свои координаты, создаю новые маркеры, а затем добавляю обработчик. В обработчике я хочу изменить элемент DOM с определенным идентификатором.
Проблема в том, что хотя в цикле идентификатор меняется на каждой итерации, все применяемые обработчики используют последний сгенерированный postId.
for(i in results)
{
r=results[i][0];
var postId=results[i][1]; // Different for each i
if (status == google.maps.GeocoderStatus.OK)
{
markers.push(new google.maps.Marker({
map: map,
position: r[0].geometry.location
}));
console.log(postId);
google.maps.event.addListener(markers[markers.length-1], 'mouseover', function() {
console.log(postId);
});
}
}
Проблема в том, что независимо от того, над каким маркером я наведу курсор, postId печатается как «1».
Однако, когда я прохожу цикл, postId каждый раз отличается.
Выход на консоль:
21
20
12
10
9
3
2
1
Однако, когда я нахожу указатель мыши над маркером, всегда появляется 1.