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 :

Récupérer une variable dans une fonction "bizarre"


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récupérer une variable dans une fonction "bizarre"
    Bonjour,

    désolé si le titre n'est pas explicite, mais c'est certainement à cause de ma méconnaissance sur cette fonction que je ne trouve pas de réponses dans les moteurs de recherche.

    J'aimerai mettre en variable le return de cette fonction.

    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
     
    for (var i = 0; i < 2; i++) {
    	var lieu = adresses[i] ;
    	geocoder.getLocations(lieu,
    		function(result) {
    			setTimeout("", delay);
    			var p = result.Placemark[0].Point.coordinates;
    			var lat=p[1];
    			var lng=p[0];
    			retour = "("+lat+","+lng+")" ;
    			marker = new GMarker(retour);
    			map.addOverlay(marker);
    			markers[i] = marker;
    			return retour;
    		}
    	);
    }
    Ainsi, j'aimerai savoir comment récupérer la variable "retour".

    J'imagine que c'est simple pour les connaisseurs, mais le javascript et moi...

    Mais j'y viendrai, j'y viendrai !

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Comme ce n'est pas toi qui appelle directement la fonction, les possibilités sont restreintes.

    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
     
    var retour;
     
    for (var i = 0; i < 2; i++) {
    	var lieu = adresses[i] ;
    	geocoder.getLocations(lieu,
    		function(result) {
    			setTimeout("", delay);
    			var p = result.Placemark[0].Point.coordinates;
    			var lat=p[1];
    			var lng=p[0];
    			retour = "("+lat+","+lng+")" ;
    			marker = new GMarker(retour);
    			map.addOverlay(marker);
    			markers[i] = marker;
    		}
    	);
    }
    ERE

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Malheureusement, ça ne marche pas.
    Va falloir modifier la fonction.

    Merci de ton aide.

  4. #4
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    getLocations retourne quelque chose ?

    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
    var ret;
    for (var i = 0; i < 2; i++) {
    	var lieu = adresses[i] ;
    	ret = geocoder.getLocations(lieu,
    		function(result) {
    			setTimeout("", delay);
    			var p = result.Placemark[0].Point.coordinates;
    			var lat=p[1];
    			var lng=p[0];
    			retour = "("+lat+","+lng+")" ;
    			marker = new GMarker(retour);
    			map.addOverlay(marker);
    			markers[i] = marker;
    			return retour;
    		}
    	);
    }

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Non, rien.

    Je crois que je vais revoir la totalité du code et gérer cela différemment.

    Merci pour votre aide.


    EDIT !
    Je viens de comprendre quelque chose !
    Cette fonction (appartenant à l'API GoogleMap) laisse le reste du code javascript s'executer.
    Or, le code qui suit a besoin des infos de cette "fonction".

    Quelqu'un sait donc comment expliquer à cette maudite fonction (oui maudite ! ^^) qu'il ne faut pas qu'elle laisse executer la suite du code avant qu'elle ne finisse ses opérations ?

    Merci

  6. #6
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    (...) qu'il ne faut pas qu'elle laisse executer la suite du code avant qu'elle ne finisse ses opérations
    getLocations est ainsi construite, et c'est pour cela qu'on lui passe en second paramètre une fonction à exécuter une fois son traitement terminé. On ne peut pas la rendre synchrone.
    A toi donc d'organiser ton code en conséquence, par exemple en fournissant à la fonction passée à getLocations l'info comme quoi c'est la dernière adresse traitée; cela permettra de déclencher un code particulier en fin de fonction.

    ERE

Discussions similaires

  1. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  2. [MySQL] Récupérer le résultat d'une requête dans une variable
    Par kryogen dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/10/2007, 14h29
  3. Réponses: 5
    Dernier message: 28/09/2007, 14h58
  4. Comment récupérer le contenu d'une URL dans une variable ?
    Par Fildz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2006, 09h26

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