<form name="form_esempio"> <input type="text" id="input_text_1" style="border:1px solid lime;background:black;color:cyan;width:300px" value=""> <input type="button" style="border:2px solid yellow;background:darkgreen;color:yellow;font-family:'comic sans ms'" onclick="gestore(1);" value="Start"> <input type="button" style="border:2px solid firebrick;background:black;color:red;font-family:'comic sans ms'" onclick="gestore(0)" value="Stop"> </form> <script language="javascript"> var parziale=""; var da_scrivere="Visita 'The Shiny Side of the Moon' "; var i=0; function anima_testo() { if (i>37) {i=0; form_esempio.input_text_1.setAttribute("value",""); parziale=""; } else { parziale= parziale+ da_scrivere.charAt(i); form_esempio.input_text_1.setAttribute("value", parziale); i++; } } function gestore(azione) { if (azione==1) intv = setInterval("anima_testo()",150); else if (azione==0) { clearInterval(intv); i=0; parziale=""; form_esempio.input_text_1.setAttribute("value",""); } } </script> |
Definiamo per prima cosa il form che conterrè un campo di input di testo e due bottoni per far partire e fermare l'animazione. Come potete vedere tutti gli elementi sono modificati tramite attributi dei CSS per renderli meno convenzionali (guardate sotto come si presenta graficamente). Nello script si definiscono tre variabili al di fuori delle funzioni:
Di seguito inizia la funzione che anima il testo. Per prima cosa controlla il valore di i. Se è maggiore di 37 (numero di caratteri di da_contare) la fa diventare zero (riparte da capo), cancella la scritta nell'input text (la rende uguale alla stringa vuota) e fa lo stesso con la variabile parziale. Se invece i è minore di 37, la variabile parziale viene aggiornata aggiungendo un carattere preso da da_scrivere e il suo valore viene scritto nell'input form tramite un setAttribute sull'oggetto. La variabile i viene incrementata per estrarre al prossimo passaggio il successivo carattere di da_cercare. Qui finisce la funzione che si occupa di animare il testo e inizia quella che gestisce le azioni corrispondenti alla pressione dei due bottoni. Questi ultimi le passano un valore ("Start" passa 1 e "Stop" 0), che serve per decidere quello che si deve fare. Se è stato premuto "Start" (viene passato 1), allora si imposta un intervalo per anima_testo(), se invece viene premuto "Stop" (viene passato 0), l'intervallo viene tolto, cancellato il contenuto del form e azzerate le variabili i e parziale. |