2016-05-05 152 views
1

我试图让一个元素在左侧移动,当鼠标位于屏幕左侧时,右侧位于另一侧。我想激活一个函数,当鼠标进入一个区域时该元素会移动,并在退出时停止该函数。setInterval无法停止

我一直在尝试使用setIntervalclearInterval,但不可能使其工作。 setInterval的作品,功能启动,但我不能停止。

下面是代码,在初始化函数声明:

var intervalLeft; 
    var intervalRight; 

    var currentMousePos = { x: -1, y: -1 }; 

    $(document).mousemove(function(event) { 
     currentMousePos.x = event.pageX; 
     if (currentMousePos.x < 200) { 
      console.log('LEFT'); 
      intervalLeft = setInterval(goleft, 500); 
     } else if (currentMousePos.x > $width-200) { 
      console.log('RIGHT'); 
      intervalRight = setInterval(goright, 500); 
     } else { 
      console.log('STOP'); 
      clearInterval(intervalRight); 
      clearInterval(intervalLeft); 
     } 
    }); 

回答

6

您在每个mousemove事件创建一个新的interval所以你清楚只有最后一个开始。你应该检查你是否已经开始interval,并且只有在你没有清除的时候才开始一个新的

+0

哦,我认为'interval'对象只是自我更新,实际上它们是相乘的。它现在工作正常,非常感谢你! – Skaddict