Javascript setTimeout忽略时间参数

时间:2011-10-12 06:26:25

标签: javascript settimeout

这不是我第一次使用setTimeout(),但我无法弄清问题是什么。 setTimeout()的代码部分正确执行,但它立即执行而没有延迟。如果有人能看到问题,那会有所帮助。这是代码:

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

2 个答案:

答案 0 :(得分:4)

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

  1. 开发人员认为时间以秒为单位指定 - 但2500很好,那是2.5秒。
  2. 他立即调用该函数(例如setTimeout(foo(), 1234));
  3. 但是没有任何理由适用于您的代码,因此如果对该函数有任何其他调用,请检查其余代码。


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

    setTimeout(crossFade, 2500);
    

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

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

答案 1 :(得分:0)

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

1)功能或表达 2)以毫秒为单位的时间

在您的代码中,您提供字符串或表达式:

的setTimeout( '交叉淡化()',...)

这通常不鼓励使用eval。您应该传递一个函数 - 名为:

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

或建议匿名:

的setTimeout(函数(){交叉淡化()},....

除非你提供一个示例ok jsfiddle给我们看看这个被调用的上下文,否则你可以采取一切措施来解决这个问题。