gpt4 book ai didi

javascript - SetInterval 不从 HTML 表单的 onClick 事件运行

转载 作者:行者123 更新时间:2023-11-28 12:12:11 25 4
gpt4 key购买 nike

我刚刚编写了一个计时器函数,它从页面上的 5 秒开始倒计时。接下来我想创建一个表单,在提交时调用计时器函数。

但即使 onClick 触发了该函数(并且控制台记录“hi”),它也永远不会执行 setInterval。

为什么 setInterval 在我立即调用该函数时起作用,但在提交表单时不起作用?经过一番研究,我仍然无法找出其中的原因。

  <body>
<h1 id="title">
This a simple timer
<form action="">
<input type="text" name="duration" />
<input type="submit" onclick="timer()" />
</form>
</h1>
<script src="src/index.js"></script>
</body>

JavaScript

const title = document.getElementById("title");
const btn = document.getElementById("btn");

const timer = () => {
console.log("hi");
let interval = 5;
let countdown = window.setInterval(() => {
title.innerText = "00:" + interval;
interval--;
if (interval === 0) {
title.innerText = "DONE";
clearInterval(countdown);
}
}, 1000);
};

最佳答案

由于action属性设置为空字符串的HTML表单将其表单提交到当前页面,因此每次提交时都会重新加载页面,因为为什么您的JS函数永远不会被调用

您可以做的是通过调用 e.preventDefault() 来防止默认(重新加载)行为在您的console.log("hi");之前声明。

还有你的<input type="submit"...将更改为 <input type="submit" onclick="timer(event)" />

也不要忘记将参数添加到 const timer = e => {...

关于javascript - SetInterval 不从 HTML 表单的 onClick 事件运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59341915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com