setInterval() 中的函数立即执行
我正在制作一个 jquery 应用程序,通过使用 setInterval() 在指定的时间间隔后隐藏图像。问题是隐藏图像函数立即执行,没有延迟。
$(document).ready(function() {
setInterval(change(), 99999999);
function change() {
$('#slideshow img').eq(0).removeClass('show');
}
});
我正在 jsfiddle 中测试它。
I am in the process of making a jquery application to hide an image after a specified interval of time by using setInterval(). The problem is that the hide image function executes immediately without delay.
$(document).ready(function() {
setInterval(change(), 99999999);
function change() {
$('#slideshow img').eq(0).removeClass('show');
}
});
I am testing it in jsfiddle.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
http://jsfiddle.net/wWHux/3/
您立即调用了该函数,而不是将其传递给
设置间隔
。setInterval(change, 1500 )
- 将函数change
传递给setInterval
setInterval(change(), 1500 )
- 调用函数change
并将结果 (undefined
) 传递给setInterval
http://jsfiddle.net/wWHux/3/
You called the function immediately instead of passing it to
setInterval
.setInterval( change, 1500 )
- passes functionchange
tosetInterval
setInterval( change(), 1500 )
- calls the functionchange
and passes the result (undefined
) tosetInterval
如果您有
setInterval(change(), 99999999);
您最终会立即调用change()
函数并将其返回值传递给setInterval( )
函数。您需要通过将change()
包装在函数中来延迟其执行。或者您可以通过仅传递 setInterval() 函数本身而不调用它来延迟它。
要么有效。我个人认为第一个比第二个更清楚地表达了意图。
Where you have
setInterval(change(), 99999999);
you end up calling thechange()
function immediately and passing the return value of it to thesetInterval()
function. You need delay the execution ofchange()
by wrapping it in a function.Or you can delay it by passing
setInterval()
just the function itself without calling it.Either works. I personally find the first one a bit clearer about the intent than the second.
您有
setInterval(change(), 99999999);
,它应该是setInterval(change, 99999999);
。请参阅 setInterval/setTimeout 的文档,了解原因。 :)常见的错误,经常发生在我身上。 :)
You have
setInterval(change(), 99999999);
and it should besetInterval(change, 99999999);
. See the documentation of setInterval/setTimeout why. :)Common mistake, happens to me all the time. :)
将 setInterval(change(), 99999999); 更改为 setInterval(change, 99999999); ,
如您所知,99999999 意味着 99999999 毫秒。
Change
setInterval(change(), 99999999);
tosetInterval(change, 99999999);
And 99999999 means 99999999 milliseconds as you known.