string.charAt()返回0

时间:2013-07-20 20:59:59

标签: javascript html

我试图单独打印一个单词的每个字母。这个词是变量字符串。

我有以下代码:

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

2 个答案:

答案 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);
    }
}

FIDDLE

我没有更改它,因为它似乎正在工作,但作为一般规则string是变量的一个非常糟糕的名称,使用str或其他尚未存在的名称定义

答案 1 :(得分:0)

el.innerHTML = + string.charAt(i)

不应该是+ =而不是= +。