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 variable d'une fonction dans une fonction


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Récupérer variable d'une fonction dans une fonction
    Bonjour,

    Après un jour de recherche j'ai décidé de vous solliciter

    Voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function Select_Bouton_Clavier(A){
       var result = [];
       db.transaction(function (tx) {
          tx.executeSql('SELECT * FROM Clavier WHERE A=' + A, [], function(tx, rs){
     
             var row = rs.rows.item(0);
             var Nom =  row['Nom'];
             var B =  row['B'];
          }, []);
       });
    }
    Je souhaite récupéré les variables 'Nom' et 'B' comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select_Bouton_Clavier(5)
    Alert('Nom : ' + Nom + 'B : ' + B);
    J'ai essayé en combinant plusieurs 'return' mais nada;
    Merci beaucoup,

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bonjour,

    Une transaction SQL est une opération asynchrone, elle prend un peu de temps pour être exécutée. Ca veut dire que lorsque ta seconde instruction sera exécutée, 'B' et 'Nom' ne seront pas encore définies. En gros, la fonction passée en argument est exécutée APRES le reste des instructions de la fonction Select.

    Pour palier à ce problème, il existe plusieurs solutions mais la plus simple est d'utiliser une fonction callback. En fait, tu en utilises déjà deux lorsque tu passes comme argument une 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
    function Select_Bouton_Clavier(A, callback){
       var result = [];
       db.transaction(function (tx) {
          tx.executeSql('SELECT * FROM Clavier WHERE A=' + A, [], function(tx, rs){
     
             var row = rs.rows.item(0);
             var Nom =  row['Nom'];
             var B =  row['B'];
             callback(Nom, B);
          }, []);
       });
    }
     
    Select_Bouton_Clavier(5, function(Nom,B){
        Alert('Nom : ' + Nom + 'B : ' + B);
    });
    One Web to rule them all

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour t'as réponse précise.
    En revanche le code ne passe pas (aucune alerte) bien qu'en BDD la ligne existe.

    J'ai bien compris l'intégralité du code et l'inteteret/fonctionnement du callback.

    Le code ne retourne donc aucun affichage et si je lance en console Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select_Bouton_Clavier(1, function(Nom,B){
        Alert('Nom : ' + Nom + 'B : ' + B);
    });
    La console affiche : undifined

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 119
    Points
    44 119
    Par défaut
    Bonjour,
    visiblement une petite faute de frappe Alert, en javascript cela s'écrit alert.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    YOU ROCKS !!! -> SylvainPV , NoSmoking

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/03/2013, 12h05
  2. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  3. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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