Javascript 在鼠标按下事件中连续更改范围输入元素的位置(单步)

Javascript 在鼠标按下事件中连续更改范围输入元素的位置(单步),javascript,jquery,html,css,d3.js,Javascript,Jquery,Html,Css,D3.js,我试图建立一个滑块使用范围输入元素的位移1步点击,滚动或长按(连续按)。我有单击和滚动所需的逻辑,但是相同的逻辑似乎不适用于鼠标按下事件(长时间/连续按下) 以下是我到目前为止的代码(用于单击鼠标): var cur=0; d3.选择(“输入”) .on(“输入”,函数(){ var threshold=d3.select(this).node().value; 如果(阈值>当前值){ cur++ }否则如果(阈值当前值){ cur++ }否则如果(阈值+cur){ cur++; i递增=正确

我试图建立一个滑块使用范围输入元素的位移1步点击,滚动或长按(连续按)。我有单击和滚动所需的逻辑,但是相同的逻辑似乎不适用于鼠标按下事件(长时间/连续按下)

以下是我到目前为止的代码(用于单击鼠标):

var cur=0;
d3.选择(“输入”)
.on(“输入”,函数(){
var threshold=d3.select(this).node().value;
如果(阈值>当前值){
cur++
}否则如果(阈值<当前值){
cur--
}
d3.选择(this).node().value=cur;
});
d3.选择(“输入”)
.on(“mousedown”,function(){
var node1=这个;
int=setInterval(函数(){
var threshold=d3.select(node1.node().value;
如果(阈值>当前值){
cur++
}否则如果(阈值<当前值){
cur--
}
d3.选择(node1.node().value=cur;
}, 100)
}).on('mouseup',function(){
清除间隔(int);
});
滑块{
-webkit外观:无;
宽度:400px;
高度:8px;
背景#d3;
-webkit转换:.2s;
转变:不透明度;
}



mousedown
mouseup
事件不应连续触发,因为它们仅在按下或释放鼠标时触发

将有两个计时器,一个用于
mousedown
,另一个用于
changeValue()
,当
mousedown
时间超过500ms时,它将触发
changeTimer
根据
的增量计算输入值。
当鼠标按下时,清除两个定时器

var鼠标器,
变更计时器,
cur=0,
阈值=0,
i递增=假;
d3.选择(“输入”)
.on('input',function(){
阈值=+this.value;
如果(+阈值>+cur){
cur++;
i递增=正确;
}
否则{
cur--;
i递增=假;
}
this.value=cur;
})
d3.选择(“输入”)
.on(“mousedown”,function(){
var输入=此;
ClearTimeout();
mouseTimer=setTimeout(函数(){
更改值(输入);
}, 500);
})
d3.选择(窗口)
.on('mouseup',function(){
ClearTimeout();
});
函数更改值(输入){
changeTimer=setTimeout(函数(){
如果(正在增加){
cur++;
cur=cur>threshold?threshold:cur;
}
否则{
cur--;
cur=cur
滑块{
-webkit外观:无;
宽度:400px;
高度:8px;
背景#d3;
-webkit转换:.2s;
转变:不透明度;
}



当您在mousedown事件中再次定义阈值时,它返回“cur”的值,因为您将其设置为正上方的cur。使用一个超出阈值范围的变量。谢谢你的回答。。。然而,上面的演示似乎不是按1的步骤进行的,按下按钮只是不断地将滑块向右移动(不会在阈值处停止)。很抱歉,我误解了您的问题,希望这次我理解正确。如果有什么问题,请告诉我。现在它破坏了输入范围滑块的正常功能。。。i、 e.现在,它在正常的点击/拖动/箭头键(您可以在我的初始代码中看到)上不起作用,这可能是因为代码现在正在覆盖正常的输入函数
input()
可能是问题所在。我将检查并稍后返回。我将更新代码段,现在可以单击/拖动/箭头键/长按控件。