2011-10-12 104 views
1

这不是我第一次使用setTimeout(),但我无法弄清楚问题是什么。 setTimeout()的代码部分正确执行,但是它没有延迟就立即执行。如果有人能看到这个问题,那会有帮助。代码如下:Javascript setTimeout忽略时间参数

if(token==1){ 
    img1.src=ssImages[imgNum]; 
    num1=0; 
    num2=10; 
    setTimeout('crossFade()',2500); 
} 
+0

您正在调用一个函数而不是一个字符串? '的setTimeout( crossFade,2500);' –

+0

@Igor Dymov:不,那不是同一个问题。 – Guffa

+1

请创建一个http://jsfiddle.net/演示,因为超时本身[工作得很好](http://jsfiddle.net/JAU2Z/)。 –

回答

4

您确定这是代码?如果立即执行,通常有两个原因:

  1. 开发人员认为时间是以秒为单位指定的 - 但2500是好的,这是2.5秒。
  2. 他立即调用函数(例如setTimeout(foo(), 1234));

但是,没有一个原因适用于您的代码,因此如果有任何其他调用该函数,请检查其余代码。


无论如何,你应该传递一个函数,而不是一个字符串:

setTimeout(crossFade, 2500); 

或者,如果你需要指定任何参数:

setTimeout(function() { 
    crossFade(...); 
}, 2500); 
+0

@ratSawGod:究竟哪一个信息不应该进一步传播?任何ThiefMaster所说的都是100%正确的。 *“不起作用”*不是有用的错误描述。我们只能用你给我们的东西来工作,到目前为止,你只给了我们这一行'setTimeout('crossFade()',2500);',它完美地工作。创建一个更完整的示例来演示您的问题。请不要粗鲁。其他人正在花费宝贵的时间来帮助你*。 –

0

我Theifmaster同意。窗户。 setTimeout的方法有两个参数:

1)功能或表达 2)时间(ms)

在你的代码提供一个字符串或表达式:

的setTimeout( '交叉淡入淡出()',.. ..)

这通常不鼓励使用eval。你应该通过一个功能 - 无论是命名为:

的setTimeout(淡入淡出,....)

OR的建议匿名:

的setTimeout(函数(){交叉淡入淡出()} ....

这是所有你能做的麻烦,除非你提供一个例子确定的jsfiddle拍这个代码,看看这个被称为上下文。