Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Settimout不在回路内部工作,行为怪异?_Javascript_Loops_For Loop_Settimeout - Fatal编程技术网

Javascript Settimout不在回路内部工作,行为怪异?

Javascript Settimout不在回路内部工作,行为怪异?,javascript,loops,for-loop,settimeout,Javascript,Loops,For Loop,Settimeout,我试图用javascript模拟打字机的效果。 理论上,它应该与我的代码一起工作: function TypeWriteToDoc(txt, id, x){ document.getElementById(id).innerHTML = document.getElementById(id).innerHTML + txt.charAt(x); } function TypeWrite(txt,id){ for (var i = 0; i < txt.length; i++){ se

我试图用javascript模拟打字机的效果。 理论上,它应该与我的代码一起工作:

function TypeWriteToDoc(txt, id, x){
document.getElementById(id).innerHTML = document.getElementById(id).innerHTML + txt.charAt(x);
}

function TypeWrite(txt,id){
for (var i = 0; i < txt.length; i++){
  setTimeout(function() {
    TypeWriteToDoc(txt, id, i);
    }, 1000*(i+1));
  }
}

这是带有回调函数的for循环中的var的常见问题

最简单的解决方案?用let代替。让我们有支持


与前面的响应类似,但我没有将原始文本与div.innerHtml一起添加,而是将其调整为文本字符,这更像是一种打字机的感觉。为了增加延迟,我将索引乘以1000,而不是将其相加,因为更大的增量更明显

函数typewritetodoctext,id,i{ setTimeoutfunction{ var div=document.getElementById div.innerHTML+=txt.charAti },1000*i } 函数TypeWriteText,id{ 对于变量i=0;i有什么问题吗?你似乎说你的代码不起作用,但你没有说出什么问题。它根本不起作用。上面带有setTimeout的代码不起任何作用。
function TypeWriteWithNoSettimeout(txt, id){
for (var i = 0; i < txt.lenght; i++){
  TypeWriteToDoc(txt, id, i);}
}
function TypeWrite(txt,id){
for (let i = 0; i < txt.length; i++){
  setTimeout(function() {
    TypeWriteToDoc(txt, id, i);
    }, 1000*(i+1));
  }
}