Partage
  • Partager sur Facebook
  • Partager sur Twitter

Faire d'un code une fonction

Sujet résolu
    16 décembre 2008 à 16:55:29

    Bonjour,

    J'ai un code Javascript qui me permet d'afficher du texte avec un effet de machine à écrire, le voici :
    var chaine = "WEYLAND-YUTANI COMPANY <br /> &raquo; MOTHER<br /><u>INTERFACE 2037 READY FOR INQUIRY</u><br /><br />"; 
    	var nb_car = chaine.length; 
    	var tableau = chaine.split("");
    	texte = new Array;
    	var txt = '';
    	var nb_msg = nb_car - 1;
    	
    	for (i=0; i<nb_car; i++) {
    	texte[i] = txt+tableau[i];
    	var txt = texte[i];
    	}
    
    	actual_texte = 0;
    	
    	function changeMessage()
    	{
    		document.getElementById("console").innerHTML = texte[actual_texte];
    		actual_texte++;
    		
    		if(actual_texte >= texte.length)
    			actual_texte = nb_msg;
    		}
    	if(document.getElementById)
    
    	setInterval("changeMessage()", 20); /* la vitesse de defilement (plus on a une valeur faible plus texte s'affiche rapidement) */
    


    Mais je voudrais faire de ce code une seule et même fonction comme welcome();.
    Après multiples tentatives, je n'ai pas réussi.

    Quelqu'un a-t-il une solution ?

    Merci d'avance !


    • Partager sur Facebook
    • Partager sur Twitter
      16 décembre 2008 à 17:44:38

      peux tu expliquer d'avantage?
      tu veux obtenir quoi?
      tu as pensé a quoi?
      • Partager sur Facebook
      • Partager sur Twitter
        16 décembre 2008 à 17:57:35

        Je voudrais obtenir quelque chose du genre :

        function welcome()
        {
                var chaine = "WEYLAND-YUTANI COMPANY <br /> &raquo; MOTHER<br /><u>INTERFACE 2037 READY FOR INQUIRY</u><br /><br />"; 
        	var nb_car = chaine.length; 
        	var tableau = chaine.split("");
        	texte = new Array;
        	var txt = '';
        	var nb_msg = nb_car - 1;
        	
        	for (i=0; i<nb_car; i++) {
        	texte[i] = txt+tableau[i];
        	var txt = texte[i];
        	}
        
        	actual_texte = 0;
        	
        	function changeMessage()
        	{
        		document.getElementById("console").innerHTML = texte[actual_texte];
        		actual_texte++;
        		
        		if(actual_texte >= texte.length)
        			actual_texte = nb_msg;
        		}
        	if(document.getElementById)
        
        	setInterval("changeMessage()", 20); /* la vitesse de defilement (plus on a une valeur faible plus texte s'affiche rapidement) */
        
        }//Fin de la fonction
        


        Pour avoir une fonction et pas du code simple, afin de faire un <body onload="welcome();">, ce qui m'arrangerais bien.
        Merci de ta réponse !

        • Partager sur Facebook
        • Partager sur Twitter
          16 décembre 2008 à 18:18:24

          et la comme tu fais ca marche pas?
          • Partager sur Facebook
          • Partager sur Twitter
            16 décembre 2008 à 18:24:13

            Non; il y a une fonction dans une fonction. Ca marche pas.
            • Partager sur Facebook
            • Partager sur Twitter
              16 décembre 2008 à 18:25:27

              function changeMessage()
              {
              	document.getElementById("console").innerHTML = texte[actual_texte];
              	actual_texte++;
              	
              	if (actual_texte >= texte.length)
              		actual_texte = nb_msg;
              }
              
              function welcome()
              {
              	var chaine = "WEYLAND-YUTANI COMPANY <br /> &raquo; MOTHER<br /><u>INTERFACE 2037 READY FOR INQUIRY</u><br /><br />"; 
              	var nb_car = chaine.length; 
              	var tableau = chaine.split('');
              	texte = new Array();
              	var txt = '';
              	nb_msg = nb_car - 1;
              	
              	for (var i = 0; i < nb_car; i++)
              	{
              		texte[i] = txt + tableau[i];
              		var txt = texte[i];
              	}
              
              	actual_texte = 0;
              	
              	if (document.getElementById)
              		setInterval("changeMessage()", 20); /* la vitesse de defilement (plus on a une valeur faible plus texte s'affiche rapidement) */
              
              }//Fin de la fonction
              
              • Partager sur Facebook
              • Partager sur Twitter
                16 décembre 2008 à 21:10:43

                Non ça ne marchera pas comme ça car dans la première fonction, les variables n'existent pas.

                Dans l'entête du fichier HTML, mets ça :

                var chaine = "WEYLAND-YUTANI COMPANY <br /> &raquo; MOTHER<br /><u>INTERFACE 2037 READY FOR INQUIRY</u><br /><br />"; 
                var nb_car = chaine.length; 
                var tableau = chaine.split("");
                texte = new Array;
                var txt = '';
                var nb_msg = nb_car - 1;
                
                for (i=0; i<nb_car; i++) {
                	texte[i] = txt+tableau[i];
                	var txt = texte[i];
                }
                
                actual_texte = 0;
                
                function changeMessage()
                {
                	document.getElementById("console").innerHTML = texte[actual_texte];
                	actual_texte++;
                	
                	if(actual_texte >= texte.length)
                		actual_texte = nb_msg;
                }
                
                window.onload = function() {
                	if(document.getElementById)
                		setInterval("changeMessage()", 20);
                }
                
                • Partager sur Facebook
                • Partager sur Twitter
                  16 décembre 2008 à 21:18:32

                  Mon script marchera à la perfection.

                  Les variables existent puisque créées dans la fonction welcome()
                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 décembre 2008 à 21:30:18

                    Ces variables ne sont pas globales, si ?

                    Peut-être que je me trompe, j'ai pas le temps de testé et j'essayerai dès que possible (si ça marche tu m'auras appris quelque chose ;) )
                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 décembre 2008 à 21:33:13

                      Les variables déclarés dans des fonctions sont globales, a condition de ne pas les avoirs déclarées avec le préfixe "var"
                      • Partager sur Facebook
                      • Partager sur Twitter
                        16 décembre 2008 à 22:27:35

                        Désolé mais aucun des 2 codes ne fonctionnent, j'ai mis <body onload="welcome();">.
                        Je ne vois vraiment pas pourquoi.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 décembre 2008 à 22:46:28

                          C'est bon, ça marche !
                          C'est une autre fonction du fichier qui faisait planter celle-ci.
                          Merci à toi Tiller ! Et merci aussi à Vyk12 !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 décembre 2008 à 12:45:45

                            Citation : Tiller

                            Les variables déclarés dans des fonctions sont globales, a condition de ne pas les avoirs déclarées avec le préfixe "var"



                            Sérieux ? Je me coucherai moins bête ce soir ;)
                            Je croyais qu'il fallait au moins les déclarer hors de la fonction (var trucmuche;) et ainsi avoir accès à celle-ci partout mais apapremment non. Mais est-ce que c'est "valide" de déclarer une variable sans "var" ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 décembre 2008 à 13:13:12

                              Valide de quel point de vue? Il n'existe aucun "règlement" a proprement parler sur le javascript comme le w3.
                              Mais cela marche sur tout navigateurs, vieux comme récents
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 décembre 2008 à 16:04:39

                                Je croyais juste qu'il était obligatoire de précéder chaque déclaration de variable par le mot-clé var. Apparemment, ce mot-clé est juste là pour dire que la variable est locale à la fonction, non ?
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Faire d'un code une fonction

                                × 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