我正在尝试创建一种幻灯片。
问题:
function slides(x) {
$("#irack").stop().animate({"left": x}, 20);
};
setInterval(slides(-30),300);
此代码仅将 div 向左移动 1 次。
为什么它不每 300 毫秒移动一次 div ?
最佳答案
您需要将代码包装在函数中定期运行:
function slides(x) {
$("#irack").stop().animate({"left": x}, 20);
};
setInterval(function() {
slides(-30);
}, 300);
您的意思是真的 setInterval
?这种情况将会持续发生,大约每 300 毫秒一次。如果您希望它只发生一次,请使用 setTimeout
相反。
更新:如果您想稍后取消间隔,则需要将句柄保存到变量中:
// Somewhere appropriate, have a variable for the handle
var handle = 0; // 0 = not running
...
// Starting:
handle = setInterval(...);
...
// Stopping:
if (handle != 0) {
clearInterval(handle);
}
handle = 0;
请注意,在未设置句柄时,请使用 0
。 0
是 setInterval
的无效返回值,因此您可以依赖它。 (如果您愿意,也可以使用 undefined
或 null
,但请务必检查它们。)
关于Jquery setInterval() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4555656/