javascript - 我正在尝试一个接一个地打印字母

标签 javascript html

我试图一个接一个地打印一个字母,但这段代码只等待 100 毫秒,然后没有停顿地打印值。知道为什么会发生这种情况以及如何解决它吗? 代码:

    for (let i = 0; i < welcText.length; i++) {
        setTimeout(()=>{
            welcome.innerText += welcText[i];
        },100);
    }

最佳答案

请注意,setTimeout 实际上不会延迟后面代码的运行;它只是安排将来发生的事情。所以所有字母在 100 毫秒后同时添加。

修复它的最直接方法是通过将延迟乘以字母索引 (i * 100),使每个后续超时等待更长的时间:

const welcome = document.getElementById('welcome');
const welcText = 'Welcome!';

for (let i = 0; i < welcText.length; i++) {
    setTimeout(() => {
        welcome.innerText += welcText[i];
    }, i * 100);
}
<div id="welcome"></div>

关于javascript - 我正在尝试一个接一个地打印字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71095457/

相关文章:

javascript - AngularJS : Load defer JSON and Use It between multiple Controllers

Javascript对数组进行两次排序

javascript - 是否可以将图像从外部源转换为 base64 字符串客户端?

python - Django POST 请求参数在views.py 中不返回任何内容

javascript - 动态添加新的 ng-model 到 angularJS

html - 并行 Bootstrap 网格系统

javascript - jwysiwyg jquery 插件

javascript - Chrome(不在应用程序中)- facebook 错误不安全的 JavaScript 尝试

javascript - 如何使用 anchor 标记在单击按钮时弹出?

javascript - 模糊滚动图像