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

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 : 55
    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