我试图单独打印一个单词的每个字母。这个词是变量字符串。
我有以下代码:
function typewriter() {
var el = document.getElementById("typewr");
var string = "Hello";
for(var i=0;i<string.length;i++) {
setTimeout(function(){el.innerHTML =+ string.charAt(i);},1000);
}
}
(<div id="typewr"></div>
代码中有一个<body>
,它由<body onLoad="typewriter()">
解析
但由于某种原因,它只是返回0(1秒后)
为什么这样做?我如何解决它? o.O
答案 0 :(得分:2)
你需要一个闭包来保持i
的值,然后你需要增加每次迭代超时的时间,因为循环不等待下一次超时等,否则它不会全部工作超时将同时执行,当它们i
时,它将是它设置的最后一个值:
function typewriter() {
var el = document.getElementById("typewr");
var string = "Hello";
for(var i=0;i<string.length;i++) {
(function(k) {
setTimeout(function(){
el.innerHTML += string.charAt(k);
},k*1000);
})(i);
}
}
我没有更改它,因为它似乎正在工作,但作为一般规则string
是变量的一个非常糟糕的名称,使用str
或其他尚未存在的名称定义
答案 1 :(得分:0)
el.innerHTML = + string.charAt(i)
不应该是+ =而不是= +。