javascript - string.charAt() 返回 0

标签 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

最佳答案

您需要一个闭包来保留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 或其他名称其他尚未定义。

关于javascript - string.charAt() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17766647/

相关文章:

javascript - 如何在javascript中阻止输入

HTML 表单、字符集和 accept-charset 属性

html - 图像溢出边界

javascript - 使用 node-mysql 同时查询

javascript - 即使 CORS 配置为允许访问,也未发送 Http cookie

javascript - 图像落后于具有 z-index 属性的对象(嵌入式 youtube 视频)

jquery - 缩略图分页/滚动

javascript - 在 iframe 中隐藏 Element Div 并更改 element img

html - 所见即所得的html编辑器查询

javascript - JavaScript 中的简单 throttle