IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Boucle, fonction et passage de la variable i


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Boucle, fonction et passage de la variable i
    Bonjour à tous,

    Il m'arrive un problème je pense "classique" mais les quelques solutions que j'ai envisagé sont pour le moment sans résultat.
    Je voudrais géolocaliser 3 adresses consécutives grace au geocoder google et insérer les Latitudes et Longitudes obtenus dans les champs correspondant avant la validation de mon formulaire.

    J'ai donc créé une boucle dans laquelle se trouve la fonction de geocode google, seulement la valeur de i ne passe pas dans celle ci...
    Comment puis-je faire en sorte de la récupérer dans ma fonction pour traiter les résultats correspondants ?

    Merci d'avance !!

    (les 3 adresses sont bien geolocalisés puisque pour cela, la valeur de i n'est pas nécessaire dans la fonction, mais avant pour récupérer la bonne adresse. Par contre j'ai besoin de i pour insérer la valeur du résultat dans les champs correspondants)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    for(var i=1; i<=3; i++) {
    	addr = document.getElementById("adresse_etape_"+i).value ;
    	geocoder_event.geocode( { 'address': addr}, function(results, status) {
    		/* Si géolocalisation réussie */ 
    		if (status == google.maps.GeocoderStatus.OK) {
    			/* Récupération des coordonnées et insertion dans les champs correspondant */ 
    			latitude = results[0].geometry.location.lat();
    			longitude = results[0].geometry.location.lng();
    			document.getElementById("lat_etape_"+i).value = latitude;
    			document.getElementById("lng_etape_"+i).value = longitude;
    		} else { 
    			document.getElementById("error_location_etape_"+i).style.display = "block";
    			document.getElementById("error_location_etape_"+i).innerHTML = "message d'erreur";
    		}/* if (status...*/
    		function handleResponse(){
    			$('#answer').get(0).innerHTML = sendAjax.responseText;
    		}
    	}); /* geocoder geocode*/
    }

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 219
    Points : 336
    Points
    336
    Par défaut
    Bonjour,

    As-tu esayé d'écrire ta fonction en dehors de ta boucle ? (et de l'appeler dans ta boucle)

    Cordialement.

  3. #3
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 424
    Points : 8 709
    Points
    8 709
    Billets dans le blog
    43
    Par défaut
    A vu de nez, tu devrais définir une fonction fct à l'extérieur de ta boucle appelant le géocodage et prenant i en paramètre, comme ce qui suit pour setTimeout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function fct(i) {
        setTimeout(function () {
            alert(i);
        }, 1000);
    }
     
    for (var i = 1; i <= 3; i++) {
        fct(i);
    }

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    il faut rattacher i à l'instance ...

    dans l'idée ça se rapproche de ça
    http://javascript.developpez.com/faq...lick.dynamique

  5. #5
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 424
    Points : 8 709
    Points
    8 709
    Billets dans le blog
    43
    Par défaut
    Personnellement, je ne suis pas fan de rajouter des propriétés à des objets externes. Mais ça fonctionne aussi, même si je préfère la méthode que j'ai proposé ^^

    EDIT : Pour davantage d'explication sur la solution, je viens d'écrire un rapide billet sur les fermetures sur mon blog.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/07/2009, 21h14
  2. Passage d'une variable d'une fonction a une autre
    Par eilijah dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/09/2008, 15h49
  3. Réponses: 5
    Dernier message: 23/10/2007, 14h26
  4. Passage d'une variable comme paramètre d'une fonction
    Par lowman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2007, 15h12
  5. [PHP-JS] passage d'une variable php à une fonction javascript
    Par pimpmyride dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/04/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo