在事件监听器中增加setTimeout



我在为事件侦听器函数添加超时时遇到问题。

onclick事件似乎不是问题,但添加到功能似乎不起作用。

需要jQuery吗?我想在函数执行前添加3或5秒。

<HTML>
<body>
<p>Click "Try it". Wait 3 seconds, and the page will alert "Hello".</p>
<button id="btn">Try it</button>
<!--
onclick="setTimeout(myFunction, 3000);"
-->
<script>
document.getElementById('btn').addEventListener("click", myFunction)
function myFunction() {
alert('Hello');
}

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

可以使用匿名函数调用setTimeout()

document.getElementById('btn').addEventListener("click", function() {
setTimeout(myFunction, 3000);
});
function myFunction() {
alert('Hello');
}
<p>Click "Try it". Wait 3 seconds, and the page will alert "Hello".</p>
<button id="btn">Try it</button>

除了Barmar的答案,我想添加一个挑战和一个技巧:

挑战-现在你有能力延迟警报,看看当"尝试一下"时会发生什么。快速点击按钮多次。显示多个警报。我们如何确保在每3秒结束时只显示一个警报?

提示-快速的周转时间,即编码一个功能并立即在屏幕上看到,这在开始时是至关重要的。我用了repl。它在过去是这样做的。你可以尝试类似的东西,甚至有你自己的本地设置,尽管这可能有点困难设置。

最新更新