Partage
  • Partager sur Facebook
  • Partager sur Twitter

Deux fonctions, une variable

    21 mai 2006 à 15:30:38

    Salut
    Voici le plan de mon script js :


    var active = "oui";
    function fonction_1
    {
       if(active == "oui")
       {
       //code quelconque
       active = "non";
       }
    }


    Vous l'aurez compris, cette fonction ne peut donc s'executer qu'une seul fois.
    Maintenant, pour que je puisse la re éxécuter, il faut remettre que active == "oui".

    Et quand je met dans une autre fonction a part :
    active == "oui";

    Bah pour la première fonction active est toujours égal a non, donc la fonction ne se refait pas.
    Comment remettre la variable active a oui dans une autre fonction ?
    merci
    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2006 à 15:42:05

      var active = "oui";
      function oui_non(active)
      {
         if(active == "oui")
         {
         //code quelconque
         active = "non";
         }
         
         else
         {
             active = "oui";
         }
      }

      c'est ce que j'appelle du 2 en 1 ! :p
      la seule différence c'est que tu dois préciser la valeur de `active` quand tu appelles la fonction, voilà, @+ ;)
      • Partager sur Facebook
      • Partager sur Twitter
        21 mai 2006 à 15:47:18

        mais nan je veux le faire dans une autre fonction !!

        parce que regarde :

        var active = "oui";
        function test(pEvent)
        {
        if(active == "oui")
        {
                if(pEvent.keyCode == 38) //haut
                {
                        var x = document.getElementById('x_haut').innerHTML;
                        var y = document.getElementById('y_haut').innerHTML;
                        deplace(x,y);
                }
                else if(pEvent.keyCode == 40) //bas
                {
                        var x = document.getElementById('x_bas').innerHTML;
                        var y = document.getElementById('y_bas').innerHTML;
                        deplace(x,y);
                }
                else if(pEvent.keyCode == 39) //droite
                {
                        var x = document.getElementById('x_droit').innerHTML;
                        var y = document.getElementById('y_droit').innerHTML;
                        deplace(x,y);
                }
                else if(pEvent.keyCode == 37) //gauche
                {
                        var x = document.getElementById('x_gauche').innerHTML;
                        var y = document.getElementById('y_gauche').innerHTML;
                        deplace(x,y);
                }
        active = "non";
        }
        }


        function deplace(x,y)
        {
        var xhr_file; // on déclare l'instance
        if (window.XMLHttpRequest) xhr_file = new XMLHttpRequest(); // Firefox, Opera, Konqueror, Safari, ...
        else if (window.ActiveXObject) xhr_file = new ActiveXObject('Microsoft.XMLHTTP'); // Internet Explorer
        else alert('JavaScript : votre navigateur ne supporte pas les objets XMLHttpRequest...'); // Navigateur ancien

                var fichier = "deplace_map.php?x="+x+"&y="+y+"";
                xhr_file.open("GET", fichier, false);
                xhr_file.send(null);
                if(xhr_file.readyState == 4)
                {
                document.getElementById('idmap').innerHTML = xhr_file.responseText;
                active = "oui";
                }
        }


        regarde en bas de la 2eme fonction le active = "oui";
        • Partager sur Facebook
        • Partager sur Twitter
          21 mai 2006 à 18:50:12

          active étant une variable globale, ta deuxième fonction remet active à oui, tout devrait marcher comme tu le veux.

          Mais juste une remarque : inutile d'utiliser "oui" et "non", qui sont des chaines de carctéres (soit au moin 3 octets pour la variable, au moins ...), il existe des bouléens en javascript :
          var active = true;
          function premiere()
              {
              if(active)
                  {
                  //blablabla
                  }
              active = false;
              }
          function deuxieme()
              {
              //blablabla
              active = false;
              }


          Comme tu le vois, active étant un bouléen, un simple if(active) suffit pour if(active == true), et if(!active) pour if(active == false).
          • Partager sur Facebook
          • Partager sur Twitter
            21 mai 2006 à 18:55:55

            j'ai rien compris o_O
            • Partager sur Facebook
            • Partager sur Twitter
            Zéro pointé à vie. | La chimie est l'écoute de la matière. | Art&Science.
              21 mai 2006 à 19:16:47

              En clair, active déclaré hors d'une fonction est une variable globale utilisable dans toutes les fonctions. Les bouléens (true et false) sont plus pratiques et prennent beaucoup moins de mémoire.
              • Partager sur Facebook
              • Partager sur Twitter

              Deux fonctions, une variable

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown