Javascript 为什么悬停后清除间隔会加速旋转

Javascript 为什么悬停后清除间隔会加速旋转,javascript,clearinterval,Javascript,Clearinterval,我有一个网站上,我正在工作的旋转滑块 加载页面时,滑块会自动滚动,当鼠标移到页面上方时,滑块会停止,当鼠标离开时,滑块会重新开始 我已经停止了滑块的工作,但是当我将鼠标移出时,滑块再次启动,但速度是原来的两倍,导致滑块不显示任何内容 我的清除间隔不能正常工作有什么原因吗?如何让滑块停止和启动,而不改变速度和混乱 rotateSwitch: function() { var myTimer=setInterval(function() { this.autoRotate

我有一个网站上,我正在工作的旋转滑块

加载页面时,滑块会自动滚动,当鼠标移到页面上方时,滑块会停止,当鼠标离开时,滑块会重新开始

我已经停止了滑块的工作,但是当我将鼠标移出时,滑块再次启动,但速度是原来的两倍,导致滑块不显示任何内容

我的清除间隔不能正常工作有什么原因吗?如何让滑块停止和启动,而不改变速度和混乱

     rotateSwitch: function() {  
       var myTimer=setInterval(function() { this.autoRotate(); }.bind(this), 5000);
       $('.hero img').hover(
         function() {
         window.clearInterval(myTimer)},
         function() {
         this.rotateSwitch();}.bind(this));
    },       

在每次鼠标移动时,通过调用this.rotateSwitch再次绑定函数。相反,只需再次启动间隔:

rotateSwitch: function() {  
    var myTimer,
        that = this;
    function start() {
        myTimer = setInterval(that.autoRotate.bind(that), 5000);
    }
    function stop() {
        clearInterval(myTimer);
    }
    $('.hero img').hover(stop, start);
    start();
},

如果该函数被多次调用,您可能希望将.hero img选择器也限制为特定上下文。

每次调用rotateSwitch时,事件都会再次绑定。因此mouseout事件运行了两次,因此记录了两次间隔。或者,至少,这是我认为可能发生的事情。这对我来说是有意义的。我只是不知道如何更正它。也许你可以将事件绑定到函数之外?知道该如何编写吗?这个方法所属的对象是什么?有构造器吗?