javascript - 如何通过传递参数在 JavaScript 中设置计时器
问题描述
我正在尝试使用 HTML 输入框设置超时,并将其用作setTimeout
.
这是一个非常简单的任务,但我不是 JS 开发人员,所以我不确定如何将参数正确传递给箭头函数。
HTML 代码仅包含 2 个元素。
<button id="myElementId">Click me</button>
<input id="milliseconds" type="number" placeholder="number of milliseconds"/>
我的 JS 代码如下所示:
const clickbutton = document.getElementById('myElementId');
const millis = parseInt(document.getElementById('milliseconds').value, 10);
clickbutton.addEventListener('click', (event) => {
setTimeout(() => { alert("I work");
}, millis); // <-- here I don't want to use a static value
});
但是,似乎我无法millis
从箭头函数内部的外部范围获取值。
我还尝试传递第二个参数:
const clickbutton = document.getElementById('myElementId');
const millis = parseInt(document.getElementById('milliseconds').value, 10);
clickbutton.addEventListener('click', (event, millis) => {
setTimeout(() => { alert("I work");
}, millis);
});
那里没有运气。
任何帮助表示赞赏。
谢谢你。
解决方案
获取单击事件侦听器中的值,否则未定义(仅在您在输入中键入内容并决定单击按钮后才定义):
const clickbutton = document.getElementById('myElementId');
clickbutton.addEventListener('click', (event) => {
const millis = parseInt(document.getElementById('milliseconds').value, 10);
setTimeout(() => {
alert("I work");
}, millis);
});
<button id="myElementId">Click me</button>
<input id="milliseconds" type="number" placeholder="number of milliseconds" />
推荐阅读
- c++ - 以毫秒为单位将字符串解析为 boost::posix_time::ptime
- jquery - 哪个前端框架适合单页搜索应用?
- python - 具有多个值 Python 的参数
- mysql - SQL LEFT JOIN 与可能的连接条件重复匹配
- azure - 回收时 Azure Web 应用程序密钥保管库异常
- regex - 正则表达式匹配字符串而不是 1
- node.js - SameSite Cookie 属性问题
- php - 批量创建多个 tar 文件的持续时间随着每个批次的增加而增加
- python-3.x - 使用 Keras 的模型类将代码从 TensorFlow 1.x 迁移到 TensorFlow 2.x
- visual-studio-code - VSCode 远程容器开发中的 postCreateCommand 不显示 Azure Cli 输出