【发布时间】:2018-11-04 16:28:46
【问题描述】:
我正在尝试使用 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 millis = ...行放在 timout 函数中,否则它不会获取值,而millis在加载时只会为空 -
您对
millis的分配不会延续到未来。使用您的代码,millis将保持在 在代码行运行时设置的任何值,即使您没有错误地将const用于应该更改的值.解决此问题的一种方法是将其转换为函数:jsfiddle.net/khrismuc/m1xqL8ys
标签: javascript ecmascript-6 settimeout arrow-functions