点击5
,它将变成7-9-11 ...
我希望6-7-8 ...
有帮助吗?
function go_plus(e) {
let obj = $(e.target);
let a = parseInt(obj.text());
a += 1;
obj.text(a);
}
var setint = '';
function go_spinn(e) {
setint = setInterval(function() {
go_plus(e);
}, 79);
}
$('#count').on('mouseleave mouseup', function() {
clearInterval(setint);
});
#count {
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='count' onclick='go_plus(event)' onmousedown='go_spinn(event)'>5</div>
答案 0 :(得分:3)
所以问题是您可以“缓慢单击”东西-按住鼠标一两秒钟,然后放开鼠标,仍然会导致单击。
解决问题的最佳方法是在go_spin开始之前设置一个超时,单击该超时即可清除。
缺点是go_spinn
的启动速度不快-也就是说,在go_spinn
开始之前,您需要按住鼠标直到超时,例如200ms 。测试一下,您也许可以将其放回一点点(至150ms左右)以实现所需的功能。
编辑:顺便说一句,我只是在假设您要实现的目标-您实际上在尝试使用此代码实现什么?
function go_plus(e){
let obj = $(e.target);
let a = parseInt(obj.text());
a += 1;
obj.text(a);
}
var setint = '';
var startspin;
function go_spinn(e){
startspin = setTimeout(function() {
setint = setInterval(function(){go_plus(e);}, 79);
},200);
}
$('#count').on('click mouseleave mouseup', function(){
clearInterval(setint);
clearInterval(startspin);
});
#count{
cursor:pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='count' onclick='go_plus(event)' onmousedown='go_spinn(event)'>5</div>
答案 1 :(得分:1)
只需将您的html代码更改为<div id='count' onmousedown='go_spinn(event)'>5</div>
,以便删除onclick事件。