Javascript 函数在后续调用中使用setTimeout抛出
我在尝试一些简单的东西,打字效果:Javascript 函数在后续调用中使用setTimeout抛出,javascript,html,function,settimeout,Javascript,Html,Function,Settimeout,我在尝试一些简单的东西,打字效果: var i=0; var txt=“生态” 无功转速=1; 功能打字机(idtxt){ 如果(i函数()吗,这样我就可以进一步研究它了。多谢了,这是一个,基本上它将打字机(idtxt)包装在一个函数中,这样您就可以作为参数传入。它类似于function(){typeWriter(idtxt)}。如果您还不知道这部分的话。我建议您使用setTimeout(打字机、速度、idtxt)作为下面显示的答案,以避免混淆。innerHTML+=不好。它是缓慢的,而且是浪
var i=0;
var txt=“生态”
无功转速=1;
功能打字机(idtxt){
如果(i
在设置超时中调用打字机时,您忘记输入idtxt
:
var i=0;
var txt=“生态”
无功转速=1000;
功能打字机(idtxt){
如果(i打字机(idtxt),速度);
}
};代码>
更改设置超时(打字机、速度)代码>设置超时(打字机、速度、idtxt)代码>
无法发送idtxt
参数
PS-cahnge也var-speed=1000代码>1s==1000ms
var i=0;
var txt=“生态”
无功转速=1000;
功能打字机(idtxt){
如果(i
发生这种情况是因为在第一次调用打字机后,idtxt
变量超出范围。您可以将参数作为setTimeout
的第一个参数传递给typeWriter
的后续调用。像这样:
setTimeout(打字机、速度、idtxt);
您可以在此处阅读有关设置超时的更多信息:
您可以在这里了解更多关于为什么这是必要的:
var i=0;
var txt=“生态”
无功转速=1000;
功能打字机(idtxt){
如果(i
ES6提供了其他方法
例如,承诺管理:
const delay=ms=>新承诺(r=>setTimeout(r,ms))
,txt=“你好,世界!”
;
异步功能打字机(idtxt)
{
const elm=document.getElementById(idtxt)
等待(请发送txt的信函)
{
elm.textContent+=字母
等待延迟(500)
}
}
remo-btn
您能告诉我这种类型的实现被称为()=>函数()
吗,这样我就可以进一步研究它了。多谢了,这是一个,基本上它将打字机(idtxt)
包装在一个函数中,这样您就可以作为参数传入。它类似于function(){typeWriter(idtxt)}
。如果您还不知道这部分的话。我建议您使用setTimeout(打字机、速度、idtxt)
作为下面显示的答案,以避免混淆。innerHTML+=
不好。它是缓慢的,而且是浪费的,而且大多数时候它是不必要的。最好将该行更改为document.getElementById(idtxt.textContent=txt.slice(0,i+1)代码>我试图遵循代码,但我很难理解某些部分。我需要提高我的JavaScript知识。但是非常感谢,这可以帮助我使我的代码更加实用。你不需要将字符串转换成数组,字符串是可编辑的。您正是使用它将字符串扩展到一个数组中。这里的wait
不需要,因为迭代器是同步的。循环的内容是异步的并不重要。所以对于(让txt字母)
就足够了。