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 :

Portée de variable


Sujet :

JavaScript

Vue hybride

Spaccio Portée de variable 18/05/2009, 16h56
SpaceFrog Je ne vois pas pourquoi... 18/05/2009, 17h01
Spaccio Même si je supprime onload... 18/05/2009, 17h09
SpaceFrog non si tu supprimes le onlaod... 18/05/2009, 17h12
Bovino Dans ton cas, l'ordre... 18/05/2009, 17h54
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut Portée de variable
    Bonjour à tous,
    Je n'arrive pas à modifier la valeur d'une variable globale depuis une fonction.
    J'utilise "window" qui devrait correspondre, à peu près, à l'usage de "global" dans PHP. Mais rien y fait, l'"alert 1" devrait afficher 'Yes'. Je ne comprends pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var mavar1 = null; //globale
    alert('alert 0=' + mavar1);
     
    function mavar2(){
    	alert('alert 2=' + mavar1);
    	window.mavar1 = 'Yes';
    	alert('alert 3=' + mavar1);
    }
    alert('alert 1=' + mavar1);
    window.onload = mavar2;

  2. #2
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas pourquoi l'alert 1 devrait retourner autre chose que null ???

    la fonction n'est lancée que sur le onload
    il est dons normal que seule l'alerte 3 donne un resultat modifié
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut
    Même si je supprime onload j'aurai le même résultat.
    Comment faire pour que mon "alert 1" affiche 'Yes' ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var mavar1 = null; //globale
    alert('alert 0=' + mavar1);
     
    function mavar2(){
    	alert('alert 2=' + mavar1);
    	window.mavar1 = 'Yes';
    	alert('alert 3=' + mavar1);
    }
    alert('alert 1=' + mavar1);
    mavar2();

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    Billets dans le blog
    1
    Par défaut
    non si tu supprimes le onlaod tu n'a plus les autres alertes ...

    pour modifier l'alerte 1 il suffit de modifier la variable juste avant ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mavar2();
    alert('alert 1=' + mavar1);
    ou
    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
    var mavar1 = null; //globale
    alert('alert 0=' + mavar1);
     
    function mavar2(){
    	alert('alert 2=' + mavar1);
    	window.mavar1 = 'Yes';
    	alert('alert 3=' + mavar1);
    }
     
    function mavar3(){window.mavar1 = 'Yes';
    }
     
    mavar3();
    alert('alert 1=' + mavar1);
    window.onload = mavar2;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Dans ton cas, l'ordre d'exécution est le suivant :
    • Chargement du code HTML de ta page ;
    • Lorsqu'on arrive au script, exécution des instruction (var... 1er alert 0) ;
    • Evaluation de la fonction pour détecter d'éventuelles erreurs ;
    • Exécution des instructions suivantes (alert1) ;
    • Lorsque la page a fini d'être chargée (balise fermante </html>), déclenchement de l'événement onload ;
    • Exécution de la fonction.

    Donc comme tu peux le voir, le alert 1 est exécuté avant que la variable soit modifiée.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 57
    Par défaut
    Merci Bovino pour cette précision. Disons que si je reprends le code de SpaceFrog, pour modéliser mon problème, ça donnerait plutôt ça :
    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 mavar1 = null; //globale
    alert('alert 0=' + mavar1);
     
    function mavar2(){
    	alert('alert 2=' + mavar1);
    	window.mavar1 = 'Yes';
    	alert('alert 3=' + mavar1);
    	mavar3('mavar1', mavar1);
    }
     
    function mavar3(obj, val){
    	window.obj = val;
    }
     
    // la globale devrait avoir changé de valeur
    alert('alert 1=' + window.mavar1); 
    window.onload = mavar2;
    Mais là encore je dois mal m'y prendre

Discussions similaires

  1. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  2. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  3. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47

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