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 :

Passage par référence en JS ?


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Passage par référence en JS ?
    Salut ,
    Est-ce qu'on peut utiliser le passage par référence en Javascript ? Bon j'ai lu que les types natifs sont passés par valeur et que les objets créé par l'utilisateur sont passés par référence . Mais donc si je suis dans une situation comme celle ci comment je fais ?

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var nomAnnuaire ; 
     
    GDownloadUrl("viewer/data.xml", function(data) {
     
    	var xml = GXml.parse(data);
     
    	nomAnnuaire = xml.documentElement.getElementsByTagName("annuaire").getAttribute("nom");
     
    });
     
    alert(nomAnnuaire);  // Ici j'ai undefined  !!!!

  2. #2
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Il semblerai que cela ne soit pas un problème de portée de variable
    mais plutôt d'ordonnancement.

    ton alert est exécuté avant la fonction callback passée à GDownloadUrl

    pour tester, place un alert('hello'); après l'affectation de nomAnnuaire
    celui-ci apparaitra après.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par marcha Voir le message
    Salut,

    Il semblerai que cela ne soit pas un problème de portée de variable
    mais plutôt d'ordonnancement.

    ton alert est exécuté avant la fonction callback passée à GDownloadUrl

    pour tester, place un alert('hello'); après l'affectation de nomAnnuaire
    celui-ci apparaitra après.
    Vous avez parfaitement raison, mais que puis-je faire pour y remedier ?

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Il faut placer le code de traitement après l'affectation, dans la fonction par exemple.

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par marcha Voir le message
    Salut,

    Il faut placer le code de traitement après l'affectation, dans la fonction par exemple.
    Merci mais bon , ça c'est pas possible . Car enfaite j'ai un problème beaucoup plus gros que ça ( avec des api et des framework , bref c'est moche quoi ) mais je l'ai juste simplifier pour ne pas vous déranger. J'ai pensé à un truc, est ce que c'est possible de faire une sorte de wait(gdownloadURL.. ) ?

  6. #6
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Tu peux ajouter une callback perso:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var nomAnnuaire ; 
     
    GDownloadUrl("viewer/data.xml", function(data) {
     
    	var xml = GXml.parse(data);
     
    	nomAnnuaire = xml.documentElement.getElementsByTagName("annuaire").getAttribute("nom");
            callback();
    }, callback);
     
    function truc() {
      alert(nomAnnuaire);  // Ici j'ai undefined  !!!! 
    }
    et tu passe truc en paramètre à GDownloadUrl

Discussions similaires

  1. Passage par référence
    Par e1lauren dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/09/2006, 12h59
  2. Passage par copie vs passage par référence
    Par bolhrak dans le forum C++
    Réponses: 11
    Dernier message: 20/08/2006, 23h37
  3. Réponses: 4
    Dernier message: 26/12/2005, 17h01
  4. Passage par référence
    Par difficiledetrouver1pseudo dans le forum Langage
    Réponses: 9
    Dernier message: 28/09/2005, 11h17
  5. Problème très rapide de passage par référence
    Par Noxexplorer dans le forum ASP
    Réponses: 2
    Dernier message: 23/06/2005, 10h02

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