文本数组打字机动画仅播放数条后停止,求排查提示
打字机脚本无法遍历所有数组条目的问题排查与修复
问题概述
编写的打字机脚本仅能播放数组中前几条单词,之后便停止,无法遍历完dataText数组内的所有内容。
核心问题
问题出在StartTextAnimation函数的判断逻辑上:
// 错误的判断条件 if (i < dataText[i].length) {
这里错误地将数组索引值i与当前索引对应单词的长度做比较。当索引i的数值超过当前单词的长度时,条件不成立,函数会直接跳过后续执行,导致脚本停止。例如:
- 当i=9时,对应单词"Fliesen"长度为7,9>7,条件不满足,动画终止。
修复代码
将判断条件改为检查索引i是否在数组的有效范围内(即小于数组的总长度):
function StartTextAnimation(i) { if (typeof dataText[i] == 'undefined') { setTimeout(function() { StartTextAnimation(0); }, 0); } // 修正:检查索引是否在数组长度范围内 if (i < dataText.length) { typeWriter(dataText[i], 0, function() { StartTextAnimation(i + 1); }); } }
可选优化方向
- 添加字符删除动画:在切换到下一个单词前,先逐字符删除当前显示的单词,提升过渡自然度;
- 提取时间常量:将
setTimeout的延迟时间(100ms、1000ms)定义为全局常量,便于统一调整打字/停留速度; - 增加错误处理:针对数组为空的情况添加提示或默认行为。
内容的提问来源于stack exchange,提问作者jackennils
相关产品推荐
相关产品推荐

