[HTML/JS] application du setTimeOut pour un effet "machine à ecrire"

application du setTimeOut pour un effet "machine à ecrire" [HTML/JS] - HTML/CSS - Programmation

Marsh Posté le 25-06-2010 à 12:07:49    

bonjour à tous !
 
j'essaie d'installer un effet de "frappe machine à ecrire" sur la page presentation/identité de mon portfolio
www.laurent-marty.fr
 
voici mon HTML

Citation :

                       <div class="colonne_droite">
                            <form name="form_identite">
                                <textarea rows="10" cols="0" name="entrees" class="entrees">
                                </textarea>
                            </form>
                        </div>


 
et mon JS actuel

Citation :

function machine(){
     
  var tableau = ["MARTY", "Laurent", "plug-in", "j'ai connu le minitel, h&eacute oui !",".fr","#ff8bb1","51600px &agrave 300dPi","float:left"];
  var elemIdx = 0;
  var caractere = 0;
   
  for (elemIdx; elemIdx<tableau.length; elemIdx++) {
   caractere=0;
   document.form_identite.entrees.value += "\n\r";
   for (caractere; caractere<tableau[elemIdx].length; caractere++) {
    document.form_identite.entrees.value += tableau[elemIdx].substr(caractere,1);
   };
  };
 };


 
ce code fonctionne et m'affiche bien les elements du tableau.
mais je voudrai mettre un délai d'affichage entre chaque lettre.
j'ai donc essayé ceci :

Citation :

for (caractere; caractere<tableau[elemIdx].length; caractere++) {
    setTimeout("frappe(elemIdx,caractere)",500);
    function frappe(ele,car){
     document.form_identite.entrees.value += tableau[ele].substr(car,1);
    };
   };


 
et j'ai une erreur "frappe is not defined"  :(  
 
comment dois-je m'y prendre pour faire fonctionner ce setTimeOut ?
merci


Message édité par Ch'DUP le 25-06-2010 à 15:10:44
Reply

Marsh Posté le 25-06-2010 à 12:07:49   

Reply

Marsh Posté le 25-06-2010 à 14:40:36    

Pour résoudre le problème, essayer de mettre la définition de la fonction frappe avant son appel, et en dehors de la boucle :

   function frappe(ele,car){  
     document.form_identite.entrees.value += tableau[ele].substr(car,1);  
    };  
...
for (caractere; caractere<tableau[elemIdx].length; caractere++) {  
    setTimeout("frappe(elemIdx,caractere)",500);  
   };


Mais il y aura d'autres problèmes. Il faudrait revoir ça.


Message édité par olivthill le 25-06-2010 à 14:41:41
Reply

Marsh Posté le 25-06-2010 à 15:00:02    

merci de ta réponse.
 
j'avais essayer de sortir la fonction , mais pas en la mettant avant son appel.
mais toujours la meme erreur de "frappe is not defined".
 
par contre, j'ai remarqué que si j'enleve les guillements : setTimeout(frappe(elemIdx,caractere),500);  
 ça tourne en boucle sur le premier caractere et j'ai bien sur une erreur : "useless setTimeout call (missing quotes around argument?)"
mais au moins la fonction est appelée apparemment.
 
edit : bon ben le probleme c'est qu on ne peut pas passer de parametres dans l'appel d'une fonction à l'interieur d'un setTimeOut apparemment.
et si je ne passe pas ses parametres :

Citation :

setTimeout("frappe()",500);  
et
document.form_identite.entrees.value += tableau[elemIdx].substr(caractere,1);  


c'est le tableau[elemIdx] qui devient undefined ... :(


Message édité par Ch'DUP le 25-06-2010 à 15:19:19
Reply

Marsh Posté le 26-06-2010 à 11:30:49    

désolé de upper, mais je bloque vraiment la

Reply

Marsh Posté le 13-07-2010 à 13:09:04    

J'essai d'utiliser un heure digitalle sur ma page et ma fonction setTimeOut et setInterval ne marche pas SVP aidez moi

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed