55555~
我写这个算法已经一个星期了,还是解决不了,往各位大佬能帮忙看看
问题描述:手机APP上的自动滑动效果,详细点就是触摸滑动,然后app自动滑动完剩下部分。
滑动第一次的效果很正常,但是第二次的时候就有问题了,有两个setInterval在运行!
Slide.prototype.touchend = function (ev) {
var _this = this
var ev = ev || window.event
var i = this.slidePos > -(this.slideWidth*3/5) ? 4 : -4//判断方向并设置速度
_this.slideUpdate = setInterval(function() {
if (_this.slidePos <= -5 && _this.slidePos >= -_this.slideWidth-1) {//判断是否自动滑动
_this.moveLong += i//更新滑动的距离
_this.moveSlide()//调用滑动函数,滑动moveLong个距离
_this.slidePos = parseInt(_this.slide.style.left)//更新滑块位置,以便判断是否自动滑动
console.log("does it work?1",);
// ableDrag = false
}else{//滑动结束,应清除自身滑动,否则下次再次滑动会叠加!!!!就是这!!!!!
//console.log("does it work?2", _this.slideUpdate);
clearInterval(_this.slideUpdate)//清除滑动
console.log("does it work?3", _this.slideUpdate);
_this.slidePos = parseInt(_this.slide.style.left)//更新滑块位置,以便判断是否自动滑动
}
},10)
}
Slide.prototype.moveSlide = function (ev) {
var _this = this
var ev = ev || window.event
_this.slide.style.left = _this.moveLong +"px"
}
这是运行时候的结果,第一次拖动运行1,2行,第二次拖动运行3,4行
感谢各位大佬。能帮忙宣传一下更好了
在这行代码_this.slideUpdate = setInterval 之前
添加 if (_this.slideUpdate) clearInterval(_this.slideUpdate)