【问题标题】:Tap and hold in javascript. Something doesn't work点击并按住 javascript。有些东西不工作
【发布时间】:2017-05-12 18:42:52
【问题描述】:

我的小功能“点击并按住”有未知问题。谁能告诉我出了什么问题?感谢您的帮助。

<!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>

【问题讨论】:

  • 您在控制台中遇到什么错误?你有 jQuery 吗?

标签: javascript html tapandhold


【解决方案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>

【讨论】:

  • 嗨@Jordan,调用函数和函数有什么区别?你能解释一下这个例子是如何工作的吗?
  • setTimeout 期望一个可以在 30 秒后调用的函数作为第一个参数。用户最初传递了 alert() ,它是对函数的调用。警报是功能。因此,通过将警报包装在 lambda 或匿名函数中,我们为 setTimeout 提供了一个可以在需要时调用的函数。
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多