Подтвердить что ты не робот

Повторное действие JavaScript при удержании мыши

Есть ли функция JavaScript, повторяющаяся каждые столько миллисекунд, что удерживается кнопка html? Было бы здорово, если бы это можно было сделать со стандартным JavaScript, но использование jQuery или плагина jQuery тоже было бы здорово.

4b9b3361

Ответ 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
}