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 :

Variable globale et locale


Sujet :

JavaScript

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 75
    Points
    75
    Par défaut Variable globale et locale
    Bonjour,
    Souhaitant me mettre au java, j'ai suivi quelques tuto et ai repris le boulot d'un amis en m'amuasant a modifier quelques trucs pour me faire la main.

    Toutefois, j'ai un probleme.
    Je suis bloqué par une étape.

    J'ai deux pages, une index.html et une fonction.js
    je voudrai recuperer le prenom de mon utilisateur donc j'ai creer ce code que j'ai mis dans fonction.js:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function demandeprenom()
    {
    var prenom1=prompt("Bonjour, commence par indiquer ton prénom :","");
    if (prenom1!=null && prenom1!="")
      {
     
      }
      else demandeprenom()
      }
    et qui est appelé depuis index.html.

    Il fonctionne tres bien a part que je n'arrive pas récuperer ce que m'indique l'utilisateur.
    C'est apparement a cause de l'histoire des variable globale/locale.
    D'apres ce que j'en ai compris il faut que je crée une variable de session.

    Mais je n'ai pas trouver de tuto sur ces fameuses variable de session.
    Quelqu'un pourrait il m'en indiquer un ou m'expliquer comment en creer une pour resoudre mon probleme?

    Amicalement,
    Benjamin

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour et bienvenue sur Developpez.com
    Citation Envoyé par Super_carotte Voir le message
    Souhaitant me mettre au java,
    Mal parti : ici c'est Javascript

    Citation Envoyé par Super_carotte Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function demandeprenom()
    {
    var prenom1=prompt("Bonjour, commence par indiquer ton prénom :","");
    if (prenom1!=null && prenom1!="")
      {
     
      }
      else demandeprenom()
      }
    Il fonctionne tres bien a part que je n'arrive pas récuperer ce que m'indique l'utilisateur.
    Une précision préalable : les variables session n'ont rien à faire dans l'histoire. Ils s'agit de variables serveur, donc gérées (généralement) en PHP.
    Sinon, ton code devrait fonctionner. As-tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (prenom1!=null && prenom1!="")
      {
        alert(prenom1);
      }
    ?

    Sinon, concernant les variables locales/globales, tu as 2 façons de procéder :
    • soit prenom1 doit être utilisé à plusieurs endroits dans ta page et dans ce cas, ça vaut le coup d'en faire une variable globale. Pour ce faire, il suffit de la déclarer en dehors des fonctions
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      var prenom1="";
       
      function demandeprenom()
      {
      prenom1=prompt("Bonjour, commence par indiquer ton prénom :","");
      if (prenom1!=null && prenom1!="")
        {  ....
      Dans ce cas, prenom1 sera directement accessible à partir d'une autre fonction
    • Soit prenom1 n'est utilisé que dans cette fonction ainsi qu'une autre pour illustrer (par ex: : autre_fonction(param1) ) et dans ce cas une variable locale suffit, que tu pourras passer en paramètre à autre_fonction(param1)
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      function demandeprenom()
      {
      var prenom1=prompt("Bonjour, commence par indiquer ton prénom :","");
      if (prenom1!=null && prenom1!="")
        {
          alert(prenom1);
        }
        else 
           autre_fonction(prenom1);
      }
       
      function autre_fonction(param1) {
      alert(param1);
      }
      Dans ce cas, tu ne peux réutiliser la valeur saisie que dans ces 2 fonctions (à moins de la passer en paramètre à d'autres fonctions).

    EDIT : sinon, dans la FAQ, tu trouveras ici quelques explications sur les variables.

    A+

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    Tout d'abord, merci pour ta réponse claire et tres détaillée.

    Le truc, c'est que je n'utilise nul par du PHP pour ne pas avoir a faire tourner un petit serveur web derrière.
    Je fais tout en java+HTML.

    Donc je cherche une solution sous java.
    La variable globale ne me permet pas d'envoyer la valeure de la variable d'une page a l'autre.
    Et c'est la le probleme.

    Je veux pouvoir envoyer le résultat sur mon index.html

  4. #4
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 915
    Points
    79 915
    Par défaut
    Bonjour,

    Vous mettez vos valeurs dans des input hidden du formulaire et vous les récupérez par la suite en Java dans des tag
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <% request.getParameter();%>.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    @Vermine : il s'agit visiblement toujours de Javascript

    @Super_carotte : il faut nous préciser clairement si tu utilises du Java (sur un serveur) ou uniquement du Javascript. Dans ce dernier cas, merci de ne plus utiliser le terme Java qui sème la confusion

    Sinon, pour l'envoyer à index.html, il suffit d'intégrer prenom1 (déclaré en global) aux paramètres de l'url
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.location.href="index.html?le_prenom="+prenom1;
    A+

  6. #6
    Membre régulier
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.location.href="index.html?le_prenom="+prenom1;
    A l'air de fonctionner car je vois bien que mon URL contient le prenom saisi.
    Toutefois, ma fonction tourne en boucle indefiniment quand je met cette ligne en plus dans mon code.

    Voici le nouveau code qui est dans "fonction.js":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function demandeprenom()
    {
    var prenom1=prompt("Bonjour, commence par indiquer ton prénom :","");
    if (prenom1!=null && prenom1!="")
      {
    self.location.href="index.html?le_prenom="+prenom1;
      }
      else demandeprenom()
      }


    Dans variables.js j'ai ajouté: var prenom1 = "";


    Et dans mon code index.html j'ai ceci pour appeller ma 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
    17
    18
     
    <HTML>
      <HEAD>
        <TITLE>CRDP de L'académie de Nice -- Accompagenement scolaire
        </TITLE>
        <link href="crdp.css" rel="stylesheet" type="text/css">
     <SCRIPT LANGUAGE="JavaScript" SRC="variables.js"></script>
    <SCRIPT LANGUAGE="JavaScript" SRC="fonctions.js">
    </script>
     
     
     </HEAD>
     
     <script language="javascript">
     demandeprenom()
     
     
    </script>
    Comprenez vous pourquoi il boucle?

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Super_carotte Voir le message
    J'ai deux pages, une index.html et une fonction.js
    Ben visiblement tu n'as en fait qu'une seule page (un .js n'est pas une page).
    Donc, forcément, si la page se rappelle elle-même, ben ... ça boucle

    Ce que tu peux faire, c'est ajouter un test pour n'appeler ta fonction demandeprenom() que si la variable dans l'url n'est pas encore renseignée (et si elle l'est, la récupérer dans prenom1).
    Ce passage de la FAQ t'aidera

    A+

  8. #8
    Membre régulier
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    Un .js n'est pas une page? Nikel!
    Merci beaucoup, du coup, j'ai essayé avec un simple return et ça a marché!

    Moi qui m'embête depuis ce matin avec ça^^

    Merci encore,
    Benjamin

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Non, les .js, de même que les .css sont des "include".
    Ils sont "inclus" dans la page car physiquement stockés dans des fichiers différents, mais ils sont considérés comme faisant partie de la page (d'ailleurs il n'y a aucun différence entre faire un include d'un .js et transférer son contenu dans la partie <head> de la page)
    Une "page" est généralement (pour faire simple) un .html ou un .php.

    A+

  10. #10
    Membre régulier
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    arf... mon return fonctionne car mon prenom s'affiche bien sur ma .html mais pour ramener la valeur dans la html j'ai eu besoin d'y mettre dedans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prenom1 = demandeprenom(prenom1);
    Et a chaque fois qu'il passe sur cette ligne, il me relance la fonction.
    Du coup, j'ai encore un alert qui me demande le prenom...

    Comment faire en sorte de juste récupérer la valeur, pas de rééxecuter la fonction?

  11. #11
    Membre régulier
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 75
    Points
    75
    Par défaut
    J'ai trouvé, il faut utilisé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prenom1 = demandeprenom(prenom1);

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par Super_carotte Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prenom1 = demandeprenom(prenom1);
    Citation Envoyé par Super_carotte Voir le message
    J'ai trouvé, il faut utilisé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prenom1 = demandeprenom(prenom1);

    Pas bien compris dans la mesure où la différence ne saute pas aux yeux

    Plus d'autres problèmes ?

    A+

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

Discussions similaires

  1. Variable globale et locale
    Par Yachas dans le forum Général Python
    Réponses: 10
    Dernier message: 10/10/2010, 13h47
  2. variables globales et locales
    Par une_tite_question dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 25/06/2008, 18h32
  3. Variable globale et locale
    Par momo70 dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/07/2007, 09h49
  4. variables globales ou locales
    Par exhortae dans le forum C
    Réponses: 6
    Dernier message: 09/04/2007, 01h29
  5. variable globale ou locale pour CurrentDB
    Par jibouze dans le forum VBA Access
    Réponses: 7
    Dernier message: 30/05/2006, 17h15

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