在一定时间过去后,你如何做某事?

how do you do something after a certain time has passed?

我正在尝试在 JS 中发出警报,我在其中获取输入值并将其乘以 1000 以获得 ms 值和 setTimeout 函数,该函数将段落元素更改为 Time Up,时间在setTimeout 是输入 x 1000 的值(因为毫秒)有点像这样:

function domChanger() {
  document.getElementById("paragraph").innerHTML = "Time Up";
}
function time(alert) {
  alert = document.getElementById("input")
  alert.value *= 1000;
  setTimeout(domChanger(), alert.value)

}

它没有像我预期的那样执行(在 alert.value * 1000 设置的时间过去后执行该功能)它立即输出 Time Up。我误会了什么吗?因为我在 Google 上搜索了大约 1 小时,除了 setTimeout 和 setInterval 之外我找不到任何东西。

问题是

setTimeout(domChanger(), alert.value)

其中 domChanger() 立即执行

你需要传递函数引用

 setTimeout(domChanger, alert.value)

演示

function domChanger() {
  document.getElementById("paragraph").innerHTML = "Time Up";
}
function time() {
  var alert = document.getElementById("input")
  alert.value *= 1000;
  setTimeout(domChanger, alert.value)
}
<p id="paragraph"></p>
<input id="input" type="number" step="1" min="1" value="2">
<button type="button" onclick="time()">time</button>

您不需要将时间作为参数传递。只需执行以下代码即可。

HTML

<p id="paragraph"></p>
<input type="number" id="input">
<button onclick="time()">Lauch domChanger</button>
<script src="./index.js"></script>

JS

function domChanger() {
  document.getElementById("paragraph").innerHTML = "Time Up";
}

function time() {
  alert = document.getElementById("input");
  alert.value *= 1000;
  setTimeout(domChanger, alert.value);;
}