javascript - 使用 setTimeout 的函数在后续调用中抛出
问题描述
我正在尝试一些简单的东西,一种打字效果:
var i = 0;
var txt = "eco eco"
var speed = 1;
function typeWriter(idtxt) {
if (i < txt.length) {
document.getElementById(idtxt).innerHTML += txt.charAt(i);
i++;
setTimeout(typeWriter, speed);
}
};
<button class="remo-btn" onclick="typeWriter('demo')">
<p id="demo"></p>
当我对 id 进行硬编码时,代码按预期工作:
document.getElementById("demo").innerHTML += txt.charAt(i);
但是当我像这样传递 id 时:
document.getElementById(idtxt).innerHTML += txt.charAt(i);
它只返回第一个字母,在本例中为“e”(来自echo
)。
有人可以帮助我吗?
解决方案
idtxt
您在调用typeWriter
时忘记传递setTimeout
:
var i = 0;
var txt = "eco eco"
var speed = 1000;
function typeWriter(idtxt) {
if (i < txt.length) {
document.getElementById(idtxt).innerHTML += txt.charAt(i);
i++;
setTimeout(() => typeWriter(idtxt), speed);
}
};
<button class="remo-btn" onclick="typeWriter('demo')">
<p id="demo"></p>
推荐阅读
- html - 添加居中文本的叠加颜色
- python-3.x - 如何将 Python 中的 3 维数组乘以第三维中的 1 维数组
- google-chrome - Chrome 不受信任的终端和/或 crosh
- azure - Azure Spring Boot 应用程序洞察心跳遥测
- php - 禁用未模拟的类中的方法
- c - gcc 使用 source == dest 生成 memcpy?
- .net - 实体框架在加入可为空的字段时不返回任何数据,即使基础查询确实返回数据
- python - 使用 Reticulate 安装和使用 Python 包
- git - Git拒绝在其他子模块的目录中创建/使用目录
- javascript - 隐藏表单上的@ViewChild 返回未定义 - 如何访问它以便我可以设置焦点