【发布时间】:2018-02-04 18:36:47
【问题描述】:
对于客户端,我需要使用打字机效果从一个数组中显示四行不同的文本
我的打字机效果设置得很好,但我不知道为什么我的 forEach 循环只显示数组中的最后一个元素
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>
【问题讨论】:
-
您希望所有行都在“同一”时间吗?
-
不,我希望一个接一个地显示,中间有一点延迟,以便网站访问者有机会阅读短句
标签: javascript arrays foreach settimeout