Javascript setTimeout 忽略时间参数

发布于 2024-12-09 03:35:23 字数 238 浏览 3 评论 0原文

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

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

It's not the first time I've used setTimeout(), but I can't figure out what the problem is. The code part of the setTimeout() is executing correctly, but it is executing immediately without the delay. If anyone can see the problem, that would help. Here's the code:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

咿呀咿呀哟 2024-12-16 03:35:23

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

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

但这些原因都不适用于您的代码,因此请检查其余代码是否有对该函数的任何其他调用。


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

setTimeout(crossFade, 2500);

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

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

Are you sure this is the code? If it executes immediately there are usually two reasons:

  1. The developer thought the time is specified in seconds - but 2500 is fine, that's 2.5 seconds.
  2. He calls the function immediately (e.g. setTimeout(foo(), 1234));

But none of the reasons apply to your code so check the rest of the code if there are any other calls to that function.


Anyway, you should really pass a function instead of a string:

setTimeout(crossFade, 2500);

Or, if you need to specify any arguments:

setTimeout(function() {
    crossFade(...);
}, 2500);
柒夜笙歌凉 2024-12-16 03:35:23

我同意《盗贼大师》的观点。窗户。 setTimeout 方法有两个参数:

1) 函数 OR 表达式
2) 时间(以毫秒为单位)

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

setTimeout('crossFade()',....)

与使用 eval 一样,通常不鼓励这样做。您应该传递一个函数 - 要么命名为:

setTimeout(crossFade,....)

要么按照建议的匿名方式:

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

这就是您可以解决此代码问题的所有方法除非您提供一个示例 jsfiddle 以便我们查看调用的上下文。

I agree with Theifmaster. The window. setTimeout method takes two arguments:

1) Function OR Expression
2) Time in ms

In your code you provide a string or an Expression :

setTimeout('crossFade()',....)

This is generally discouraged as with the use of eval. You should pass a function - either named:

setTimeout(crossFade,....)

OR as suggested anonymous:

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

This is about all you can do to trouble shoot this code unless you provide an example ok jsfiddle for us to see the context this is called.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文