首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >string.charAt()返回0

string.charAt()返回0
EN

Stack Overflow用户
提问于 2013-07-21 04:59:59
回答 2查看 187关注 0票数 0

我正试着把每个单词的每一个字母单独打印出来。这个词就是变量字符串。

我得到了以下代码:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-21 05:08:06

你需要一个闭包来保持i的值,然后你需要增加每次迭代的超时时间,因为循环不会等待下一个超时等,否则它不会工作,因为所有的超时都将同时执行,当它们执行时,i将是它设置的最后一个值:

代码语言:javascript
复制
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或其他尚未定义的名称。

票数 2
EN

Stack Overflow用户

发布于 2013-07-21 05:05:00

el.innerHTML =+ string.charAt(i)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17766647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档