Нажмите и удерживайте в JavaScript. Что-то не работает

У меня есть неизвестная проблема с моей маленькой функцией "нажмите и удерживайте". Кто-нибудь может сказать мне, что не так? Спасибо за помощь.

<!DOCTYPE html>
<html>
<body>
<button id="seconds">30</button>

<script type="text/javascript">


var timeoutId = 0;

$('#seconds').on('mousedown', function() {
timeoutId = setTimeout(alert("something"), 1000);
}).on('mouseup mouseleave', function() {
clearTimeout(timeoutId);
});

</script>
</body>
</html>

1 ответ

Проблема в том, что ваше оповещение вызывается немедленно. Вам нужно передать функцию в setTimeout, а не вызывать ее. Я реорганизовал ваш код, чтобы сделать его функцией, и теперь предупреждение будет отображаться через 1 секунду, если вы не двигаете мышью.

var timeoutId = 0;

$('#seconds').on('mousedown', function() {
  timeoutId = setTimeout(function(){alert("something")}, 1000);
}).on('mouseup mouseleave', function() {
  clearTimeout(timeoutId);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="seconds">30</button>

Другие вопросы по тегам