js中如何实现鼠标长按连续触发?

现在有一个需求,长按'+'或者'-'按钮,数值不停增加如下图:

clipboard.png

而我在使用onMouseDown的时候,发现事件只会被触发一次,不能实现持续增加,请问要如何实现这个需求?

阅读 13k
4 个回答

mousedown的时候启动一个setInterval。200ms把宽度增加+1,mouseup的时候cancel掉。 就这么简单。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<button id="button">0</button>
<script type="text/javascript">
    var c = 0;
    var tid;
    var btn = window.document.getElementById("button");
    btn.onclick = function(e){
        c++;
            btn.innerHTML = c;
    };
    btn.onmousedown = function(e){
        tid = setInterval(function(){
            c++;
            btn.innerHTML = c;
        },500);
    };
    btn.onmouseup = function(e){
        clearInterval(tid);
    }
    btn.onmouseout = function(e){
        clearInterval(tid);
    }
</script>
</body>
</html>

可以在按下的时候触发事件,同时增加一个定时器,不断触发该事件;在鼠标抬起的时候清楚定时器

一楼正解。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题