使用鼠标按住 Javascript 可以更快地增加值

标签 javascript jquery

<分区>

我有这个脚本,每次我点击一个按钮时都会将值加 1:

<script>
    function incrementValue(id) {
       var value = parseInt(document.getElementById(id).innerHTML);
       value = value + 1;
       document.getElementById(id).innerHTML = value;
    }
</script>

<button onclick="incrementValue('skill_1')"> add </button><br>
<span id=skill_1>0</span>

但是我想调整它,如果我按住鼠标按钮,它会重复,这样我就不必一遍又一遍地按下它。

有什么方法可以使用 javascript 来做到这一点?或者 jquery 会适合吗?

最佳答案

要实现这一点,您需要使用 mousedown 事件来启动超时(这是增量计数开始之前的延迟)和间隔(重复计数)。您还需要一个 mouseupmouseleave 处理程序来删除这两个计时器。试试这个:

var timeout, interval;

[].forEach.call(document.querySelectorAll('.add'), function(button) {
  button.addEventListener('mousedown', function() {
    var id = button.dataset.target;
    incrementValue(id);
    
    timeout = setTimeout(function() {
      interval = setInterval(function() {
        incrementValue(id);
      }, 50);    
    }, 300);
  });
  
  button.addEventListener('mouseup', clearTimers);
  button.addEventListener('mouseleave', clearTimers); 
  
  function clearTimers() {
    clearTimeout(timeout);
    clearInterval(interval);
  }
});

function incrementValue(id) {
  var el = document.getElementById(id);
  var value = parseInt(el.textContent, 10);
  document.getElementById(id).textContent = ++value;
}
<button class="add" data-target="skill_1">add</button><br />
<span id="skill_1">0</span>

关于使用鼠标按住 Javascript 可以更快地增加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48442194/

相关文章:

javascript - 单击按钮时飞入内容框?

javascript - 为什么悬停时背景图像有时不显示

javascript - HTML5 电子邮件输入无法验证电子邮件地址?

javascript - jquery 如何使用 tr :nth-child(i) 构造每个或 for 循环构造

javascript - 使用点符号字符串访问对象子属性

javascript - 单击链接时关闭 Canvas 外移动菜单(JS)

javascript - 具有树摇动依赖项的 Rollup Angular 2 应用程序

jquery - 将 qTip 与 MVC3 和 jQuery 验证集成 (errorPlacement)

javascript - 使用 javascript 或 jquery 获取转发器中 span 的文本值

javascript - 在列出元素之前删除纯文本