For a client, I need to use a typewriter effect to display four different lines of text from an array
I have my typewriter effect setup well, but I'm at a loss on why my forEach loop only displays the last element from my array
var i = 0;
var text;
var txt = [
'Lorem ipsum dummy text blabla.',
'Lorem IPSUM dummy text blabla.',
'Lorem ipsum DUMMY text blabla.',
'Lorem ipsum dummy TEXT blabla.'
];
var speed = 50;
var delay = 3000
var demo = document.getElementById("demo");
function go() {
txt.forEach(function(str, index) {
text = str; // var to pass to typeWriter
setTimeout(typeWriter(), delay * index);
});
}
function typeWriter() {
if (i < text.length) {
demo.innerHTML += text.charAt(i);
i++;
setTimeout(typeWriter, speed);
} else {
// When string is fully typed, delete after 2 second
setTimeout(function() {
demo.innerHTML = '';
i = 0;
}, 2000);
}
}
<button onclick="go()">Click me</button>
<p id="demo"></p>