【发布时间】:2014-05-18 11:15:46
【问题描述】:
我刚刚遇到了一个非常奇怪的问题(虽然我已经解决了),但我想知道它为什么会首先发生:
function stuffAppear() {
var i;
for (i = 0; i < speech.length; i++) {
apperance(i);
}
}
function apperance(i) {
var x = speech[i];
setTimeout(function() {$(speech[i]).fadeIn(1000); console.log(i);}, 1000 + i * 1500);
console.log(speech[i]);
}
控制台日志显示“#yo0”,然后显示“#ma0b”(这是必需的),但同时它们从未消失
我玩弄了代码,直到我达到了这个:
function stuffAppear() {
var i;
for (i = 0; i < speech.length; i++) {
apperance(i);
}
}
function apperance(i) {
var x = speech[i];
setTimeout(function() {$(x).fadeIn(1000); console.log(i);}, 1000 + i * 1500);
}
这样就成功了,但我不知道为什么第一个代码不起作用。有人可以向我解释一下吗? 谢谢!
【问题讨论】:
-
我实际上已经检查过了。并根据它更改了我的代码(我的代码最初是调用函数的 For 循环内的 setTimeout,而不是调用函数的 For 循环,该函数内部是 setTimeout
-
令人着迷。看起来它应该像你最初通过 i 一样工作。你能用你的 HTML 设置一个 JSFiddle 吗? @undefined:这与其他问题不同,因为他 将索引作为本地变量传递。
-
jsfiddle.net/2XhqH 语音被定义为一个全局数组,字符串被推送到它
-
jsfiddle.net/2XhqH/1 我很抱歉我使用 HTML 只是因为 TrueBlueAussie 说他想查看 HTML(而且代码很大并且在很多文件之间划分,因为我正在创建一个简单的游戏引擎)(PS:此代码仅用于演示,实际代码中不会这样做)
-
顺便说一句:请更正
appearance- 拼写在代码中也很重要(特别是如果您要在 SO 上发布它):)
标签: javascript jquery for-loop settimeout