鼠标按住时JavaScript重复操作

时间:2009-12-20 05:48:12

标签: javascript jquery

是否有一个JavaScript函数重复每隔这么多毫秒才能按下html按钮?如果可以使用标准JavaScript完成它会很棒,但使用jQuery或jQuery插件也会很棒。

4 个答案:

答案 0 :(得分:26)

mousedown()事件中,此代码启动重复计时器(在此示例中每500毫秒),一旦mouseup()事件发生,就会取消该计时器。这应该适合你想要的:

var intervalId;
$("#button").mousedown(function() {
  intervalId = setInterval(do_something, 500);
}).mouseup(function() {
  clearInterval(intervalId);
});

function do_something() {
  // whatever
}

有关清除计时器的详细信息,请参阅setInterval()

答案 1 :(得分:6)

我会在一个在鼠标按下时调用的函数中使用javascript函数setInterval()

<input type="button" id="button" onmousedown="inter=setInterval(startAction, 1*1000);"
onmouseup="clearInterval(inter);" value="click here" />

<script type="text/javascript">
    function startAction(){
        //whatever you want done
    }
</script>

答案 2 :(得分:5)

var intervalId;
$("#button").mousedown(function() {
  intervalId = setInterval(do_something, 500);
}).mouseup(function() {
  clearInterval(intervalId);
}).mouseleave(function() {
//this should help solve the problem that occurs when the mouse leaves the button while pressed down
  clearInterval(intervalId);
});

function do_something() {
  // whatever
}

答案 3 :(得分:4)

我发现上面列出的两种解决方案都存在问题。

onmouseup仅在鼠标悬停在按钮上时才会被触发。如果用户将鼠标放下,则在释放鼠标之前将鼠标移开,然后clearInterval永远不会被触发,因此do_something将永远触发。

您需要添加另一个事件“onmouseout”,该事件也会调用clearInterval