You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Typewriter JS作用域问题求助:deleteAll()在函数内无法执行

Typewriter JS点击事件中deleteAll()不生效的问题解决

问题原因

Typewriter JS 基于任务队列机制执行动画逻辑:

  • 调用start()后,实例会按顺序执行队列中的所有任务
  • 第一个示例中,typeString('Hello, world')和deleteAll()都被提前加入队列,start()启动后会依次执行
  • 第二个示例中,start()仅执行了队列中的typeString任务,执行完毕后实例进入 idle 状态,此时在点击事件中直接调用deleteAll(),方法不会被加入执行队列,因此无效果

解决方法

方法1:点击时手动启动队列执行

在点击事件中调用deleteAll()后,通过start()触发队列执行:

const typewriter = new Typewriter('#typewriter');

typewriter.start();
typewriter.typeString('Hello, world');

const yes = document.querySelector("#yes");
yes.addEventListener('click', function() {
  typewriter.deleteAll().start();
});

方法2:初始化时开启循环模式

如果需要实例持续保持可执行状态,初始化时配置loop: true,这样队列执行完毕后实例不会进入 idle 状态:

const typewriter = new Typewriter('#typewriter', {
  loop: true
});

typewriter.start();
typewriter.typeString('Hello, world');

const yes = document.querySelector("#yes");
yes.addEventListener('click', function() {
  typewriter.deleteAll();
});

补充说明

两种方法的区别:

  • 方法1适合仅在点击时触发单次操作的场景,不会让实例持续循环
  • 方法2适合需要实例保持活跃、可随时响应交互的场景

内容的提问来源于stack exchange,提问作者nshaff3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:06:13