строковое значение jquery не передается в объект карты Google внутри цикла

#javascript #jquery #google-maps #jquery-gmap3

#javascript #jquery #google-карты #jquery-gmap3

Вопрос:

Почему строка теряется внутри объекта в цикле?

 for (var i = 0; i < nrow.length - 1; i  ) {
displayNote = "<b>"   nfield[0]   "</b><br />"   nfield[1]   " "   nfield[2]   "<br /> "   nfield[7];
$('#googleMap').gmap3({
    action: 'addMarker',
    lat: parseFloat(nfield[5]),
    lng: parseFloat(nfield[6]),
    events: {
        mouseover: function (marker, event) {
            var map = $(this).gmap3('get'),
            infowindow = $(this).gmap3({ action: 'get', name: 'infowindow' });
            if (infowindow) {
                infowindow.open(map, marker);
                infowindow.setContent(displayNote);
  

DisplayNote отображает только первое приращение для всех остальных infowindow

Ответ №1:

в конце выполнения цикла for DisplayNote будет содержать последнее значение. И InfoWindow покажет последнюю заметку при наведении курсора мыши. Вы можете сохранять DisplayNote для каждой итерации, создавая новую функцию

 function attachEvent( displayNote, nfield ){
  $('#googleMap').gmap3({
    action: 'addMarker',
    lat: parseFloat(nfield[5]),
    lng: parseFloat(nfield[6]),
    events: {
        mouseover: function (marker, event) {
            var map = $(this).gmap3('get'),
            infowindow = $(this).gmap3({ action: 'get', name: 'infowindow' });
            if (infowindow) {
                infowindow.open(map, marker);
                infowindow.setContent(displayNote);



}


for (var i = 0; i < nrow.length - 1; i  ) {
displayNote = "<b>"   nfield[0]   "</b><br />"   nfield[1]   " "   nfield[2]   "<br /> "   nfield[7];
attachEvent( displayNote, nfield  );
}
  

Комментарии:

1. Спасибо за ответ, проблема решена. Но из того, что вы говорите, цикл for завершен до того, как объект GoogleMap будет проанализирован, поэтому сохраняется только последнее значение, несмотря на то, что оно находится в моем цикле?

2. функция @paranoidx, которую вы указали при наведении курсора мыши, будет вызвана после завершения цикла, в вашем коде она будет использовать последнее значение.