He visto algunas preguntas similares a esta, pero hasta ahora nada que parezca funcionar en mi situación. Hice una pequeña función de escritura: está destinada a recorrer una serie de frases pasadas al atributo html del elemento y "escribirlas", como si en algún lugar estuviera escribiendo y borrando cada letra una por una.
El HTML, cuando se procesa (está escrito en PHP), se parece a esto:
<h1>Constant text: <span data-text="Example 1, Example 2, Example 3">Changing Text</span></h1>El "Texto cambiante" se "escribe" y luego se "borra".
La función "escribir" agrega recursivamente letras al elemento, una por una, desde un parámetro de cadena, y la función "borrar" elimina letras recursivamente:
function type (el, letters, delay = 0) { if ( letters.length < 1 ) { return; } var letter = letters.shift(), html = el.text(); el.text(html + letter); setTimeout(type(el, letters, delay += 200), delay); } function erase (el, delay = 0) { if ( el.html().length < 1 ) { return; } var text = el.text(); el.text(text.substring(0, text.length - 1)) setTimeout(erase(el, delay += 200), delay); } Ambas funciones parecen estar funcionando cuando se realiza la depuración con el registro de la consola. Pero por alguna razón, setTimeout no establece un tiempo de espera... Las letras de cada frase aparecen y desaparecen simultáneamente...