Есть ли функция JavaScript, повторяющаяся каждые столько миллисекунд, что удерживается кнопка html? Было бы здорово, если бы это можно было сделать со стандартным JavaScript, но использование jQuery или плагина jQuery тоже было бы здорово.
Повторное действие JavaScript при удержании мыши
Ответ 1
В событии mousedown()
этот код запускает повторяющийся таймер (каждые 500 мс в этом примере), который отменяется, как только < происходит событие href= "http://docs.jquery.com/Events/mouseup" rel= "noreferrer" > mouseup()
. Это должно быть адаптировано к тому, что вы хотите:
var intervalId;
$("#button").mousedown(function() {
intervalId = setInterval(do_something, 500);
}).mouseup(function() {
clearInterval(intervalId);
});
function do_something() {
// whatever
}
Подробнее о сбросе таймеров см. setInterval()
.
Ответ 2
Я бы использовал функцию 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>
Ответ 3
Я вижу проблему с обоими решениями, перечисленными выше.
onmouseup
запускается только в том случае, если мышь выйдет, когда она находится над кнопкой. Если пользователь держит мышь, затем отталкивает мышь, прежде чем отпускать ее, тогда clearInterval
никогда не запускается, поэтому do_something
будет срабатывать вечно.
Вам нужно добавить еще одно событие "onmouseout
", которое также вызывает clearInterval
.
Ответ 4
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
}