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