我正试着把每个单词的每一个字母单独打印出来。这个词就是变量字符串。
我得到了以下代码:
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);
}
}(在<body>代码中有一个<div id="typewr"></div>,它由<body onLoad="typewriter()">解析)
但由于某种原因,它只是返回0(在1秒之后)
它为什么要这么做?我该如何修复它?o.O
发布于 2013-07-21 05:08:06
你需要一个闭包来保持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或其他尚未定义的名称。
发布于 2013-07-21 05:05:00
el.innerHTML =+ string.charAt(i)
不应该是+=而不是=+。
https://stackoverflow.com/questions/17766647
复制相似问题