Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de variable

Sujet résolu
    11 juillet 2011 à 0:18:25

    Bonjour, voilà mon problème : Si la variable est égale à 1, on affiche un texte, si la variable = 2 on affiche un autre texte.
    Je voudrais que lorsque le texte 1 s'affiche, le suivant à s'afficher soit le 2 et ainsi de suite.

    Voila mon code pour vous montrer un peu le truc:
    <script language="Javascript">
    	var floor = 1;
    
    	if (floor == 1)
            {
    		document.write('textea');
    		floor = 2;
    	}
            else if (floor ==2 )
            {
    		document.write('texteb');
    		bouton = 1;
    	}
            else {}
    </script>
    


    Pouvez vous m'aider ?
    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2011 à 10:19:51

      Non c'est pas possible comme cela car une fois qu'il rentre dans un if() il ne continue pas.

      Ici si floor vaut 1 il va rentrer dans le 1er if() et n'ira jamais dans le elseif() ou else, peu importe ce qu'il y a dans ton 1er if().

      A mon avis il serait plus judicieux de faire une fonction que tu appelles à chaque fois.

      function test(nb) {
      	if(nb == 1) {
      		alert('texte 1');
      	} else {
      		if(nb == 2) {
      			alert('texte 2');
      		}
      	}
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        11 juillet 2011 à 10:31:41

        Bonjour, merci pour votre réponse ;)

        j'ai adapter le code que vous m'avez donné, mais ca ne marche pas, il n'y a plus rien qui s'affiche.

        function test(nb)
        {
        	if(typeof(nb) != "undefined" )
        	 {
        	document.write('texte1');
        	 var nb =1;
                  }
        
        	else if ( nb == 1)
        	 {
        	 document.write('texte2');
        	nb = 2;
        	 }
        
        	else
        	{
        	document.write('texte1');
        	 nb = 1;
        	 }
        }
        


        Pouvez vous m'aider ?
        merci d'avance.
        • Partager sur Facebook
        • Partager sur Twitter
          11 juillet 2011 à 10:43:02

          Salut,

          en utilisant les bonnes pratiques, ce sera déjà mieux : http://www.siteduzero.com/tutoriel-3-1 [...] tml#ss_part_6 ;)
          • Partager sur Facebook
          • Partager sur Twitter
            11 juillet 2011 à 10:45:12

            C'est une fonction donc si elle n'est pas appelée elle ne sera jamais exécutée.

            En fait il faut faire une fonction récursive (= qui s'appelle elle-même).


            var floor = 1;
            test(floor);
            	
            function test(nb) {
            
            	if(nb == 1) {
            		alert('texte 1');
            		test(2);
            	} else {
            		if(nb == 2) {
            			alert('texte 2');
            			test(0);
            		}
            	}
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
              11 juillet 2011 à 10:47:56

              mmmh le coup des alert, c'est pas vraiment ce qu'il cherche a faire ;)

              faudrait plutôt utiliser l’évènement onclick, après on manque de detail sur comment il veut déclencher le passage d'un texte a l'autre ....
              • Partager sur Facebook
              • Partager sur Twitter
                11 juillet 2011 à 10:50:15

                C'était pour montrer l'enchaînement des actions. Ensuite faut surtout passer par le DOM et pas document.write c'est sûr.
                • Partager sur Facebook
                • Partager sur Twitter
                  11 juillet 2011 à 10:53:04

                  Certes, mais l’idée de rappeler la fonction a l’intérieur, c'est pas du tout ce qu'il veut IMHO ;)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 juillet 2011 à 10:57:50

                    Desolation, ca marche, ca alterne bien entre les 2 textes.
                    miclebowski, d'accord j'ai enlever document.write, et ca ne marche plus.

                    Voici mon code:

                    var floor = 1;
                    test(floor);
                    			
                    function test(nb)
                    {
                    
                    	if(nb == 1) {
                    	document.innerHTML = '<input type="button" onclick="nouveauInput()" value="Ajouter un bulle" class="bulle1"/>';
                    	 test(2);
                    	 } 
                    
                            else {
                    	     if(nb == 2) {
                    	    document.innerHTML = '<input type="button" onclick="nouveauInput2()" value="Ajouter un bulle" class="bulle2"/>';
                    	     test(1);
                    	     }
                    	 }
                    			
                    }
                    

                    Merci d'avance pour vos aides ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 juillet 2011 à 11:00:21

                      Pour le innerHTML il te manque un noeud. Par exemple document.getElementById('maDiv').innerHTML =

                      Il te faut dans ton HTML <div id="maDiv"></div>
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 juillet 2011 à 11:09:30

                        Merci, je l'ai fait.
                        Mais je comprend pas, avec vos alert, le texte s'alterne bien, mais avec mon texte, c'est toujours le même qui s'affiche.

                        Voici mon code:
                        var floor = 1;
                        test(floor);
                        function test(nb)
                        {
                        
                            if(nb == 1) {
                        	document.getElementById('maDiv').innerHTML='<input type="button" onclick="nouveauInput()" value="Ajouter un bulle" class="bulle1"/>';
                        	 test(2);
                        	 }
                                else {
                        		  if(nb == 2)
                                          {
                        		 document.getElementById('maDiv').innerHTML='<input type="button" onclick="nouveauInput2()" value="Ajouter un bulle" class="bulle2"/>';
                        		 test(1);
                        	          }
                        	        }
                        			
                        }
                        


                        Pouvez vous m'aider ?
                        Merci d'avance.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 juillet 2011 à 11:11:27

                          C'est normal que tu ne vois pas le changement, sur tes 2 input tu as la même valeur.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 juillet 2011 à 11:16:42

                            Oui je sais mais avec le CSS ils ont une apparence différente et n'ont pas la même action, quand je clique dessus.
                            Ca vient vraiment de mon texte, ou de la façon de l'afficher, car avec les alert, ca marche.

                            On peut faire passer d'un texte a l'autre avec un onclick ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 juillet 2011 à 11:53:51

                              Il suffit de faire : onclick="test(1)" ou onclick="test(2)" suivant la situation ;)

                              Et enlève cette variable floor qui sert plus a rien :p
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 juillet 2011 à 11:55:17

                                Premier point à prendre en compte, ici ton code va te mettre que maDiv is null car au moment où le JS s'exécute le DOM n'est pas chargé. Donc on peut mettre le JS tout en bas de la page pour que ça fonctionne (méthode parmi tant d'autres).

                                Ensuite tu crées des input avec des gestionnaires d'événements à la volée, ton appel à la fonction nouveauInput() ne pourra pas fonctionner car le code a été ajouté après le chargement du DOM.

                                Je ne suis pas assez calé en JS pur pour contourner ce problème. Par contre en jQuery oui mais là n'est pas la question.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 juillet 2011 à 12:03:44

                                  Merci de votre aide ca marche, j'ai fait comme ca:
                                  <script language="Javascript">
                                  			var floor = 1;
                                  		        test(floor);
                                  			function test(nb)
                                  			{
                                  
                                  			   if(nb == 1) {
                                  				    document.getElementById('but').innerHTML='<span  onclick="test(1)"><input type="button" onclick="nouveauInput()" value="Ajouter un bulle" class="bulle1"/></span>';
                                  				   test(2);
                                  			   } else {
                                  				   if(nb == 2) {
                                  				    document.getElementById('but').innerHTML='<span  onclick="test(2)"><input type="button" onclick="nouveauInput2()" value="Ajouter un bulle2" class="bulle2"/></span>';
                                  					   test(1);
                                  				   }
                                  			   }
                                  			
                                  			}
                                  			
                                  			</script>
                                  


                                  Par contre quand j'enlève floor, ca ne marche plus :euh:
                                  Et aussi , une dernière question, le script fait énormément ramer la page, il y a un moyen d'arranger ca ?

                                  Merci d'avance.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    11 juillet 2011 à 12:13:16

                                    Si tu enlèves les lignes 2 et 3 ta fonction ne sera pas appelée donc rien ne sera exécuté. Ce script seul ne peut pas faire ramer, c'est pas possible. D'autres facteurs doivent entrés en compte (d'autres scripts/codes) ?

                                    EDIT : En fait si peut-être, tu fais une boucle infinie donc c'est normal. Tu appelles au début 1, ensuite 2, ensuite 1, etc. Donc faut que tu modifies ça.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      11 juillet 2011 à 12:20:02

                                      Oui, j'ai un autre petit script avec la fonction nouveauInput() et nouveauInput2().

                                      Comment modifier le script, enfin la boucle car ca me parait le seul moyen pour arriver à faire cela

                                      EDIT: j'ai vérifié, c'est bien ce script qui fait ramer ;)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        11 juillet 2011 à 12:21:31

                                        Il faut revoir tes besoins, que veux-tu exactement comme fonctionnalité. Avec ça on pourra mieux t'orienter sur la façon dont il faut s'y prendre.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          11 juillet 2011 à 12:24:14

                                          Alors, j'ai deux input, un qui appel nouveauInput() et un nouveauInput2().
                                          J'aimerais que ces input apparaissent l'un après l'autre.

                                          Une fois que input 1 est afficher et que l'on a cliquer dessus, ca affiche input 2 et ainsi de suite.

                                          Pouvez vous m'aider ?
                                          Merci d'avance.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            11 juillet 2011 à 12:26:24

                                            Donc si je résume, au chargement de la page tu crées un premier input. Ensuite à chaque fois que tu cliques sur le dernier input ça en rajoute un après c'est ça ?

                                            Voici un exemple en jQuery :
                                            <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js" /></script>
                                            <script type="text/javascript">
                                            $(document).ready(function() {
                                            	var $maDiv = $('#maDiv');
                                            	$maDiv.html('<input type="button" value="Button" />');
                                            	
                                            	$('input').live('click', function() {
                                            		$maDiv.append('<input type="button" value="Button" />');
                                            	});
                                            });
                                            </script>
                                            <div id="maDiv"></div>
                                            
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              11 juillet 2011 à 12:29:15

                                              Nan pas exactement, au chargement de la page input 1 est présent. Une fois que l'on clique dessus, il est remplacer par input 2 et ainsi de suite.
                                              J'ai été clair :p

                                              Merci d'avance pour votre aide qui à été très utile jusque là ;)
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                11 juillet 2011 à 12:32:03

                                                Ah c'est un remplacement.

                                                Je modifie mon code plus haut :
                                                <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js" /></script>
                                                <script type="text/javascript">
                                                $(document).ready(function() {
                                                	var $maDiv = $('#maDiv');
                                                	var nb = 1;
                                                	$maDiv.html('<input type="button" value="Button 1" class="button1" />');
                                                	
                                                	$('input').live('click', function() {
                                                		if(nb == 1) {
                                                			$maDiv.html('<input type="button" value="Button 2" class="button2" />');
                                                			nb = 2;
                                                		} else {
                                                			$maDiv.html('<input type="button" value="Button 1" class="button1" />');
                                                			nb = 1;
                                                		}
                                                	});
                                                });
                                                </script>
                                                <div id="maDiv"></div>
                                                
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  11 juillet 2011 à 12:40:05

                                                  Wow , c'est génial ca marche et sans ramer en plus ! ^^

                                                  Merci beaucoup !!

                                                  Juste une petite question et je vous laisse tranquille, comment faire pour ne plus afficher les input lorsque l'on à cliquer 6 fois ?
                                                  C'est possible ?
                                                  Sinon tan pis.

                                                  Merci d'avance.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    11 juillet 2011 à 12:43:56

                                                    Oui bien sûr il faut une autre variable qui va compter, je l'appelle i. A chaque clic on l'incrémente, et on vérifie que i < 6 avant de changer d'input.

                                                    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js" /></script>
                                                    <script type="text/javascript">
                                                    $(document).ready(function() {
                                                    	var $maDiv = $('#maDiv');
                                                    	var nb = 1;
                                                    	var i = 0;
                                                    	$maDiv.html('<input type="button" value="Button 1" class="button1" />');
                                                    	
                                                    	$('input').live('click', function() {
                                                    		if(i < 6) {
                                                    			if(nb == 1) {
                                                    				$maDiv.html('<input type="button" value="Button 2" class="button2" />');
                                                    				nb = 2;
                                                    			} else {
                                                    				$maDiv.html('<input type="button" value="Button 1" class="button1" />');
                                                    				nb = 1;
                                                    			}
                                                    			i++;
                                                    		}
                                                    	});
                                                    });
                                                    </script>
                                                    <div id="maDiv"></div>
                                                    

                                                    Ceci est du code jQuery (framework Javascript), tu peux voir que j'inclus un fichier tout en haut !
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      11 juillet 2011 à 12:48:08

                                                      Merci pour le code, mais il y a un petit soucis.
                                                      Une fois i arrivé à 6 , le input qui a class="bouton1" est toujours présent.

                                                      Comment arranger ca ?
                                                      Merci d'avance.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        11 juillet 2011 à 13:26:31

                                                        super ca marche :D

                                                        Merci beaucoup à vous deux pour votre aide ;)

                                                        EDIT: Enfait j'ai encore un petit soucis, par exemple le input 2 est visible si je clique dans un textarea que j'ai insérer avec nouveauInput2() qui est declancher en clinquant sur put 2, le input 2 se change en input 1 sans que j'ai cliquer dessus.

                                                        je sais pas si j'ai été très claire :euh:

                                                        Pouvez vous m'aider ?
                                                        Merci d'avance pour votre aide.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          11 juillet 2011 à 13:55:33

                                                          Il faut changer le sélecteur, par exemple $('input[type="button"]') à la ligne 9 de mon dernier code.
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            11 juillet 2011 à 14:10:43

                                                            Génial, ca marche. :D

                                                            Vraiment merci pour votre aide, c'est super sympa !
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Problème de 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