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