[JS] Temporisation

Temporisation [JS] - HTML/CSS - Programmation

Marsh Posté le 21-01-2004 à 15:42:44    

Salut à tous,
Je souhaite faire défiler du texte dans une zone "<INPUT TYPE="TEXT">" :  

<FORM NAME="TEXTE">
<INPUT TYPE="BUTTON" NAME="AFF" VALUE="SCROLL IT!!!" onclick="scroll();"><INPUT TYPE="TEXT" SIZE="30" NAME="PHRASE" VALUE="TAPEZ VOTRE PHRASE ICI"><BR>
</FORM>


 
c'est cette fonction qui s'occupe de faire défiler le texte :
 


<SCRIPT LANGUAGE="JAVASCRIPT">
longueur=document.TEXTE.elements.PHRASE.value.length;
function scroll()
 {
        chaine=document.TEXTE.elements.PHRASE.value;
       premchar=chaine.charAt(0);
       chaine=chaine.substring(1,longueur)+premchar;
       document.TEXTE.elements.PHRASE.value=chaine;
        }
</SCRIPT>


En gros la fonction mémorise puis supprime le premier caractère de la chaine de texte et rajoute ce caractère mémorisé à la fin de la chaine de texte.
 
Cà fonctionne mais ça fonctionne trop vite (normal), c'est pourquoi je souhaite appliquer une temporisation (normal) mais je sais pas comment m'y prendre.  :sweat:  
 
J'ai essayé de faire un truc de ce style :
 

while(i<1000)
     {
      i++
      if(i==999)
          {
           //travail à effectuer
          }
     }


 
mais là encore ça va toujours trop vite ( j'ai essayé d'aller jusqu'à 1000000 mais ça change rien ).  [:razorbak83]  
 
-Comment est-ce que je peux faire pour avoir une tempo efficace ?  :??:
 
Merci d'avance pour votre aide.  :jap:

Reply

Marsh Posté le 21-01-2004 à 15:42:44   

Reply

Marsh Posté le 21-01-2004 à 17:15:40    

setTimeout(), et je vois pas comment ça scroll ton code (horrible au passage, getElementById, balises en miniscules, tu connais ?)

Reply

Marsh Posté le 21-01-2004 à 20:26:15    

antsite a écrit :

setTimeout(), et je vois pas comment ça scroll ton code (horrible au passage, getElementById, balises en miniscules, tu connais ?)


Non justement je connais pas, ça apporte quoi  :??: [:superboulay]  
 
Sinon bah ça scroll pas vraiment mais ça donne une impression de scroll ( si si !  :D ) et le seul moyen que j'ai trouvé pour le faire fonctionner c'est de cliquer sur un bouton pour faire défiler la chaine caractère par caractère.
 
Le

setTimeout()

je l'ai essayé mais soit je l'ai mal utilisé soit ça fait pas ce que je cherche.  [:razorbak83]  
 
Comment l'utiliser pour répéter une action toutes les x millisecondes ?
 
EDIT: C'est bon j'ai trouvé une solution, effectivement utiliser setTimeout() mais il faut l'associer à clearTimeout():
 
Pour ceux que ça interesse :

<HTML>
 <BODY BGCOLOR="#000000" TEXT="#FFFFFF"><center>
  <font face="arial" size="6">SCROLLER</FONT><BR>
   <font face="arial" size="2">
   <FORM NAME="TEXTE">
    <INPUT TYPE="BUTTON" NAME="AFF" VALUE="START SCROLL" onclick="go();"><INPUT TYPE="TEXT" SIZE="30" NAME="PHRASE" VALUE="Coucou !!">
    <INPUT TYPE="BUTTON" NAME="STP" VALUE="STOP SCROLL" onclick="stop_ca();"><BR>
    Vitesse :
    <INPUT TYPE="BUTTON" NAME="INC" VALUE="+" onclick="javascript:increment();">
    <INPUT TYPE="TEXT" NAME="VIT" VALUE="150" size="3">
    <INPUT TYPE="BUTTON" NAME="DEC" VALUE="-" onclick="javascript:decrement();">
   </FORM>
  </font>
  <script language="javascript">
   function increment()
    {
    if(eval(document.TEXTE.elements.VIT.value) > 25)
     {
     document.TEXTE.elements.VIT.value=eval(document.TEXTE.elements.VIT.value)-25;}
     }
   function decrement()
    {
    if(eval(document.TEXTE.elements.VIT.value) < 500)
     {
      document.TEXTE.elements.VIT.value=eval(document.TEXTE.elements.VIT.value)+25;}
     }    
   function scroll()
    {
    chaine=document.TEXTE.elements.PHRASE.value;
    premchar=chaine.charAt(0);
    chaine=chaine.substring(1,longueur)+premchar;
    document.TEXTE.elements.PHRASE.value=chaine;
    a = setTimeout("scroll()",eval(document.TEXTE.elements.VIT.value));
    }
   function go()
    {
    document.TEXTE.elements.PHRASE.value=(document.TEXTE.elements.PHRASE.value+" " );
    longueur=eval(document.TEXTE.elements.PHRASE.value.length);
    var a;
    setTimeout("scroll()",eval(document.TEXTE.elements.VIT.value));
    }
   function stop_ca()
    {
       window.clearTimeout(a);
    }
  </script>
 </BODY>
</HTML>


testé sous IE uniquement, c'est crade mais ça marche.  :whistle:  
 
Merci Antsite pour ton aide.


Message édité par sebkom le 21-01-2004 à 22:44:52
Reply

Marsh Posté le 06-02-2004 à 17:26:34    

Heu, vous vous emmerdez VRAIMENT pour pas grand chose !
 
var msg="Ici ton message";
var long=msg.length;
function textdefil() {
document.form1.deftext.value=msg.substring(position,position+long);
position++;
if(position == long) position=0;
setTimeout("textdefil()",200);  
}
 
ton texte apparaitra dans l'input (ce qui te permets de piger l'arbre hiérarchique de l'objet ds la fonction) :
 
<form name="form1">
<div align="center">  
<input type="text" font name="deftext" size=30>
</div>
</form>
 
t'as plus qu^'à mettre ca à ta sauce !
 
PS: On doit meme pouvoir faire encore plus propre et concis avec des trucs genre modulo, mais je connais que dalle en JS !


Message édité par Vinny_the_true le 06-02-2004 à 17:28:43
Reply

Sujets relatifs:

Leave a Replay

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