2

ループ内のオブジェクト内で文字列が失われるのはなぜですか?

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は、他のすべての情報ウィンドウの最初の増分のみを表示します

4

1 に答える 1

1

forループ実行の最後にdisplayNoteに最後の値が含まれます。また、InfoWindowは、マウスオーバー時に最後のdisplayNoteを表示します。新しい関数を作成することにより、反復ごとに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  );
}
于 2011-10-18T20:49:27.317 に答える