setTimeout返回undefined

时间:2013-10-08 02:21:44

标签: javascript jquery

好的,所以我试图将变量打印到输入框中,每个字符之间有延迟。

for(counter=0; counter < keytext.length; counter++)
{
  setTimeout(function() {
  $('input').val($('input').val() + keytext[counter]);
  },200);
}

现在counter和keytext在外部作用域中声明,当我将val设置为keytext [1]时,我得到正确的值。但是我得到了:undefinedundefinedundefinedundefined 作为输出。

另一件奇怪的事情就是当我输出计数器时,每次循环时都会打印出keytext的实际长度(在我的情况下是7)。而另一件奇怪的事情是它不会在每个角色之间延迟。它最初等待并立即打印出整个字符串。

这是我的for循环吗?我一直看得很远,但空手而归,但我知道你们可以帮助我:)。

编辑:

感谢Qantas 94 Heavy在这里链接一个明确的解释:JavaScript closure inside loops – simple practical example

现在我将keytext和counter传递给当前范围之外的函数,正确打印值。但是,setTimeout仍未达到我想要的效果。从关键字文字打印的字符仍然一次显示,而不是一次显示200ms之间的延迟。

有什么想法吗?

编辑2:

谢谢PSL!现在所有人都在使用您的代码。 /结束

0 个答案:

没有答案