10
votes

Passez le paramètre à la fonction de rappel

My Code

// Do Ajax Demande et obtenez une réponse JSON P>

for (var i = 0; i < data.results.length; i++) {  
    result = data.results[i];
    // do stuff and create google maps marker    
    marker = new google.maps.Marker({  
        position: new google.maps.LatLng(result.lat, result.lng),   
        map: map,  
        id: result.id  
    });  
    google.maps.event.addListener(marker, 'click', function() {  
        createWindow(marker.id); //<==== this doesn't work because marker always points to the last results when this function is called
    });  

}


0 commentaires

4 Réponses :


4
votes

Le Fermeture classique Problème frappe à nouveau!

  google.maps.event.addListener(marker, 'click', function(id) {
    return function(){
      createWindow(id); //<==== this doesn't work because marker always points to the last results when this function is called
    }
  }(marker.id));     


0 commentaires


24
votes

Essayez ceci: xxx

un exemple qui démontre l'utilisation de avec : xxx

ce qui précède va enregistrer 10 dix fois. xxx

ceci connectera 0 à 9 , comme souhaité, grâce à avec introduisant une nouvelle portée.

JavaScript 1.7 a une instruction plus agréable, mais jusqu'à ce que cela soit largement pris en charge, vous pouvez Utilisez avec .

et utilisez var pour vos variables.


0 commentaires

1
votes

Essayez celui-ci xxx

Créer une nouvelle fonction xxx


0 commentaires