垂直Javascript滑块,滑动次数超过应有的次数

垂直Javascript滑块,滑动次数超过应有的次数,javascript,math,calculation,Javascript,Math,Calculation,我试图制作一个垂直的图像滑块,它可以精确地滑动滑块的宽度 我现在已经试了很多个小时让它工作,我认为这应该是很简单的事情,但我就是不知道我做错了什么,我的大脑即将融化,同时也认为我已经把它弄得太复杂了 滑块的宽度为548px,高度为137px 滑块内的图像宽度为548px除以2 正如您在下面所看到的,滑块的移动幅度略大于它应该移动的幅度 JavaScript模块(是的,向左移动和向右移动是不同的,这是因为我已经测试了很多不同的方法 如果我将正确的功能更改为: var horizontalM

我试图制作一个垂直的图像滑块,它可以精确地滑动滑块的宽度

我现在已经试了很多个小时让它工作,我认为这应该是很简单的事情,但我就是不知道我做错了什么,我的大脑即将融化,同时也认为我已经把它弄得太复杂了

滑块的宽度为548px,高度为137px

滑块内的图像宽度为548px除以2

正如您在下面所看到的,滑块的移动幅度略大于它应该移动的幅度

JavaScript模块(是的,向左移动和向右移动是不同的,这是因为我已经测试了很多不同的方法

如果我将正确的功能更改为:

  var horizontalMoveRight = function(wrapper) {
    wrapper.scrollLeft += elemScroll;

    if (elemMoved == elemMove || elemMoved > elemMove) {
      clearInterval(slideInterval);
      elemMoved = 0;
    } else {
      elemMoved++;
    }
  };
它几乎可以工作,但在点击几下后仍然会稍微移动

var horizontalsloider=(函数(){
var滑差;
var slideLeftButton;
var slideRightButton;
var滑动区间;
var滑体;
var elemScroll=0;
var ElemlLength=0;
var-elemMove=0;
var elemMoved=0;
var lastMove=false;
var horizontalConstruct=函数(parenElement、lButn、rButn、slidetimer、eleScroll){
slideParent=参数;
slideLeftButton=document.querySelectorAll(lButn);
slideRightButton=document.querySelectorAll(rButn);
slideTimer=slideTimer;
elemScroll=eleScroll;
from(slideLeftButton).forEach(elem=>elem.addEventListener(“单击”,水平单击左,假));
Array.from(slideRightButton).forEach(elem=>elem.addEventListener(“单击”,水平单击右键,假));
};
var horizontalClickLeft=函数(){
clearInterval(slideInterval);
elemMoved=0;
var wrapper=this.parentNode.querySelector(slideParent);
elemLength=wrapper.clientWidth;
elemMove=(elemLength-elemScroll)/elemScroll;
slideInterval=setInterval(函数(){
水平向左移动(包装器);
},slideTimer);
};
var horizontalClickRight=函数(){
clearInterval(slideInterval);
elemMoved=0;
var wrapper=this.parentNode.querySelector(slideParent);
elemLength=wrapper.clientWidth;
elemMove=(elemLength-elemScroll)/elemScroll;
slideInterval=setInterval(函数(){
水平移动权(包装器);
},slideTimer);
};
var horizontalMoveRight=函数(包装器){
if(elemMoved==elemMove | | elemMoved>elemMove){
clearInterval(slideInterval);
elemMoved=0;
}否则{
如果(elemMoved+1>elemMove){
lastMove=编号(((elemMove-elemMove)*10));
}
if(lastMove==false){
wrapper.scrollLeft+=elemScroll;
}否则{
wrapper.scrollLeft+=lastMove;
lastMove=false;
}
elemMoved++;
}
};
var horizontalmovelft=函数(包装器){
wrapper.scrollLeft+=-elemScroll;
if(elemMoved==elemMove | | elemMoved>elemMove){
clearInterval(slideInterval);
elemMoved=0;
}否则{
elemMoved++;
}
};
返回{
水平构造:水平构造,
水平单击左:水平单击左,
水平单击右侧:水平单击右侧
};
})();
horizontalSlider.HorizontalConstruction(“.slideInner”、“.slideLeftHorizontal”、“.slideRightHorizontal”、”.slideRightHorizontal”,7、10);
.slideInner{
位置:相对位置;
宽度:548px;
高度:137px;
溢出:隐藏;
显示器:flex;
}
.slideInner a,
.slideInner a img{
宽度:calc(548px/2);
}
.滑动灯水平,
.水平滑动{
位置:绝对位置;
最小宽度:45px;
身高:100%;
显示器:flex;
证明内容:中心;
对齐项目:居中;
z指数:2;
光标:指针;
背景色:rgba(0,0,0,0.5);
}
.水平滑动{
左:0;
颜色:#fff;
}
.滑动灯水平{
右:0;
颜色:#fff;
}
.溢出{
溢出:隐藏;
}
.幻灯片1M{
利润率:20px 0px;
边框:1px实心#000;
显示器:flex;
宽度:548px;
位置:相对位置;
}

L
R

您的错误在这一行:

elemMove=(elemLength-elemScroll)/elemScroll;

刚改成:

elemMove=elemLength/elemScroll;

var horizontalsloider=(函数(){
var滑差;
var slideLeftButton;
var slideRightButton;
var滑动区间;
var滑体;
var elemScroll=0;
var ElemlLength=0;
var-elemMove=0;
var elemMoved=0;
var lastMove=false;
var horizontalConstruct=函数(parenElement、lButn、rButn、slidetimer、eleScroll){
slideParent=参数;
slideLeftButton=document.querySelectorAll(lButn);
slideRightButton=document.querySelectorAll(rButn);
slideTimer=slideTimer;
elemScroll=eleScroll;
from(slideLeftButton).forEach(elem=>elem.addEventListener(“单击”,水平单击左,假));
Array.from(slideRightButton).forEach(elem=>elem.addEventListener(“单击”,水平单击右键,假));
};
var horizontalClickLeft=函数(){
clearInterval(slideInterval);
elemMoved=0;
var wrapper=this.parentNode.querySelector(slideParent);
elemLength=wrapper.clientWidth;
elemMove=(elemLength-elemScroll)/elemScroll;
slideInterval=setInterval(函数(){
水平向左移动(包装器);
},slideTimer);
};
var horizontalClickRight=函数(){
clearInterval(slideInterval);
elemMoved=0;
var wrapper=this.parentNode.querySelector(slideParent);
elemLength=wrapper.clientWidth;
elemMove=elemLength/elemScroll;
slideInterval=setInterval(函数(){
水平移动权(包装器);
},slideTimer);
};
var horizontalMoveRight=函数(包装器){
if(elemMoved==elemMove | | elemMoved>elemMove){
clearInterval(幻灯片)