En este artículo voy a compartir una pequeña función JavaScript que implementé para simular el tipeo de teclas.
La función toma el ID de un elemento, un texto a escribir, y un retraso expresado en milisegundos, y se encarga de ingresa el texto dentro del elemento (utilizando la propiedad "innerHTML"), de a una letra a la vez, esperando el retraso indicado entre letra y letra. Como resultado simula un texto escrito con teclado o máquina de escribir.
function typewrite(element,text,delay) { /* Simula el tipeo de teclas element: elemento donde insertar el texto. text: texto a tipear. delay: tiempo entre teclas (en milisegundos). */ // Insertar la siguiente letra aux = document.getElementById(element).innerHTML; aux = aux.concat(text.charAt(0)); document.getElementById(element).innerHTML = aux; // Esperar "delay" milisegundos para la próxima tecla if (text.length > 1) { // Eliminar la tecla actual text = text.substr(1); setTimeout(typewrite,delay,element,text,delay); } }
El funcionamiento es muy sencillo. La función toma el primer caracter del texto y lo ingresa en el elemento. Luego lanza un timer (setTimeout
) que invoca recursivamente a la función con el siguiente caracter, hasta llegar al último.
Se debe invocar de la siguiente forma:
<span id="texto"></a> <script> t="Hola mundo!!"; typewrite("texto",t,100); </script>
Como utiliza la propiedad innerHTML
, sólo funciona para escribir dentro de tags <span>
, <p>
, <pre>
, <textarea>
, <td>
, etc. Si se desea utilizar con un tag <input>
será necesario cambiar la propiedad innerHTML
por value
.
Verificar su funcionamiento:
Texto a tipear | |
Retraso (milisegundos) | |
Para más información remitirse a los siguientes enlaces:
JavaScript String charAt() Method
JavaScript String length Property
JavaScript String substr() Method
Fuente: linuxito