Jquery setInterval()不起作用

Cri*_*sty 8 jquery function

我正在尝试创建一种幻灯片.

问题:

function slides(x) {
      $("#irack").stop().animate({"left": x}, 20);
 };
setInterval(slides(-30),300);
Run Code Online (Sandbox Code Playgroud)

此代码仅将div向左移动1次.

为什么不每300毫秒移动div?

T.J*_*der 21

您需要将代码包装为在函数中间隔运行:

function slides(x) {
      $("#irack").stop().animate({"left": x}, 20);
};
setInterval(function() {
    slides(-30);
}, 300);
Run Code Online (Sandbox Code Playgroud)

真的是说setInterval什么意思?这将持续发生,每300ms左右.如果您只想发生一次,请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;
Run Code Online (Sandbox Code Playgroud)

注意在0未设置时使用句柄.0是一个无效的返回值setInterval,所以你可以依赖它.(您可以使用undefined或者null如果您愿意,也一定要检查它们.)


Cha*_*ndu 5

在您调用setInterval时,正在调用slide方法内联更改调用,如下所示:

setInterval(function(){slides(-30);},300);
Run Code Online (Sandbox Code Playgroud)