Javascript Settimout不在回路内部工作,行为怪异?
我试图用javascript模拟打字机的效果。 理论上,它应该与我的代码一起工作: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
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
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));
}
}