SetInterval只调用一次,不知道为什么?

sty*_*yke 1 javascript jquery animation frontend

可能重复:
setInterval只运行一次?

在我继续之前让我说,因为设计师的逻辑很困难,所以我感谢你承担我的无知.

我正在制作一个简单的滑块,我想这样当用户用鼠标移动图片时,程序可以记下mouseup()之前的最后一秒所覆盖的距离,这样我就可以计算多少图片必须模拟,就像它被刷过一样.

我有我的基本事件处理程序如下:

$('.testdiv').mousedown(function(){

    pretestFunction();

    //mouse is pressed
    mousepressed = 1;

    //set first X point
    prevX = event.pageX;


}).mouseup(function(){

    //get stop X point
    stopX = event.pageX;
    mousepressed = 0;

});
Run Code Online (Sandbox Code Playgroud)

pretestFunction调用setInterval,如下所示:

function pretestFunction(){
    window.setInterval(testFunction(), 1000);
}
Run Code Online (Sandbox Code Playgroud)

testfunction():

function testFunction(){
    console.log('1 second');
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,设置间隔功能只调用一次,而不是每秒一次,就像我试图让它做的那样.我究竟做错了什么?

Jac*_*ker 5

window.setInterval(testFunction(), 1000);
Run Code Online (Sandbox Code Playgroud)

应该

window.setInterval(testFunction, 1000);
Run Code Online (Sandbox Code Playgroud)

在第一个中,你传递了调用 的值testFunction(恰好是undefined,但这并不重要)

在第二个你会传递值 testFunction(即一个函数,这是你想要的.)

  • 如果你有一个带整数参数的函数foo,你可以这样做:setInterval(function(){foo(42);},1000); 即传递一个匿名函数,该函数使用您想要的值调用函数. (3认同)