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 le string retourné par une fonction


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Récupérer le string retourné par une fonction
    Bonjour tout le monde ,
    j'ai crée une fonction JS qui me retourne une variable de type string voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function mafonction(var1,var2){
    .....
    var result = 'mon_text';
    return result;
    }
    dans mon <td> j'ai appeler ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <td><script>
              var variable= mafonction(var1,var2);
              document.write(variable);
           </script></td>
    le problème c'est que ce code affiche undefined au lieu de la valeur de ma variable :/
    des idées ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 125
    Points : 149
    Points
    149
    Par défaut
    Salut,

    Je te conseille d'apprendre à débuguer, il existe quantité de méthode pour ça, tu peux le faire manuellement, il existe des plugin pour firefox etc...
    Pars du principe que pratiquement jamais tu ne codera tu premier coup un code fonctionnel, et que plus tu fais des choses compliquées, moins le repérage et la résolution des erreurs est aisée, c'est pour cela que je te conseille, dès le début, de prendre des bonnes habitudes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var variable= mafonction(var1,var2);
    Grâce à un déboggage, en 1sc tu aurait remarqué que l'erreur se situe à cette ligne car var1 et var2 ne sont pas déclarées, et tu aurait pu régler cette erreur.

    Résolution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var variable= mafonction();
    Et voilà ça fonctionne

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    J'ai pas bien compris ta solution , ma fonction doit avoir des paramètres latitude et longitude pour qu'il me retourne une adresse de localisation

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 125
    Points : 149
    Points
    149
    Par défaut
    Je ne suis pas censé le savoir puisque tu n'as pas fourni ton code ni donné d'explications...

    Tel quel il est normal que ton code ne fonctionne pas étant donné que var1 et var2 ne sont pas définis.

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <td>
         <script type="text/javascript">
              var1 = 45 ;
              var2 = 33 ;
              ma_chaine = mafonction(var1,var2);
              document.write(ma_chaine);
           </script>
    </td>

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    voici le code qui marche bien:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <script>
    function getLatLongDetail(lat,long) {
           var myLatlng= new google.maps.LatLng(lat,long );
            var geocoder = new google.maps.Geocoder(); 
            geocoder.geocode({ 'latLng': myLatlng },
              function (results, status) {
                  if (status == google.maps.GeocoderStatus.OK) {
                      if (results[0]) {
     
                          var address = "", city = "", state = "", zip = "", country = "", formattedAddress = "";
                          var lat;
                          var lng;
     
                          for (var i = 0; i < results[0].address_components.length; i++) {
                              var addr = results[0].address_components[i];
                              // check if this entry in address_components has a type of country
                              if (addr.types[0] == 'country')
                                  country = addr.long_name;
                              else if (addr.types[0] == 'street_address') // address 1
                                  address = address + addr.long_name;
                              else if (addr.types[0] == 'establishment')
                                  address = address + addr.long_name;
                              else if (addr.types[0] == 'route')  // address 2
                                  address = address + addr.long_name;
                              else if (addr.types[0] == 'postal_code')       // Zip
                                  zip = addr.short_name;
                              else if (addr.types[0] == ['administrative_area_level_1'])       // State
                                  state = addr.long_name;
                              else if (addr.types[0] == ['locality'])       // City
                                  city = addr.long_name;
                          }
     
     
                          if (results[0].formatted_address != null) {
                              formattedAddress = results[0].formatted_address;
                          }
     
                          //debugger;
     
                          var location = results[0].geometry.location;
     
                          lat = location.lat();
                          lng = location.lng();
                          //alert('City: '+ city + '\n' + 'State: '+ state + '\n' + 'Zip: '+ zip + '\n' + 'Formatted Address: '+ formattedAddress + '\n' + 'Lat: '+ lat + '\n' + 'Lng: '+ lng);
                          var add =formattedAddress + '\n';
                         alert(add);
                          //return add;
                      }
     
                  }
     
              });
        }
    coté html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <td><script type="text/javascript">
               var var1= <?php echo $en['latitude'] ?>;
                var var2= <?php echo $en['longitude'] ?>;
              getLatLongDetail(var1,var2);
           </script></td>

    Mais moi je veux pas d'alert , je veux récupérer le contenu dans un td

  7. #7
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Humm !

    Dans la fonction : Enlevez l'instruction alert(add); et remplacez la par return add; (d'ailleurs celle-ci est en commentaire)

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mai 2012
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    j'ai déjà testé ça me retourne undefined :/

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu utilises dans ta fonctions des méthodes asynchrones. Donc à la fin de l'exécution de la fonction, ces méthodes asynchrones n'ont par renvoyé leur résultat...
    Un classique AJAX : utiliser les données au bon moment !

    Et attention quand tu fournis un exemple de code sensé illustré ton problème... si tu le simplifies au point de masquer les éléments essentiels ou pire en supprimant les erreurs, ça sert à rien...
    Dans ton premier message, le code fonctionne parfaitement pour peu que les paramètres envoyés soient correctement valorisés.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/09/2012, 14h10
  2. Réponses: 1
    Dernier message: 13/04/2010, 10h00
  3. Réponses: 4
    Dernier message: 07/04/2007, 20h02
  4. valeur retournée par une fonction
    Par Biosox dans le forum C
    Réponses: 13
    Dernier message: 19/01/2007, 23h17
  5. Réponses: 11
    Dernier message: 31/10/2005, 17h59

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