运行 仅在一定时间内使用 Javascript 的功能(无 jQuery)

Run a function only for a set amount of time with Javascript (no jQuery)

我是新手

如何在设定的时间内调用一个函数,比如 3000 毫秒?我试过 setInterval 和 setTimeout 但它们不起作用。

if (budgeting === '' || budgeting.indexOf('e') > -1 || budgetValue < 0) {
  let errorHandler = document.createElement('div');
  let textErrorHandler = document.createTextNode('Oops! The balance you entered is invalid. Try again!')
  errorHandler.style.width = '500px';
  errorHandler.style.height = '20px';
  errorHandler.style.background = 'coral';
  errorHandler.style.float = 'left';
  errorHandler.appendChild(textErrorHandler);
  document.body.append(errorHandler);
}

以上是我目前的代码。我想要做的是显示一个错误消息框 3 秒(3000 毫秒),但我希望它只在每次发生错误时显示,即只显示一次。

此代码可以工作:

setInterval(() => {console.log("work")}, 3000);

显示错误时,设置一个超时时间,间隔一段时间后再次隐藏。设置超时的时候如果有超时运行,清除掉再重新设置

下面是一个基本的实现。 “显示错误”按钮可以根据需要点击多次,它只会显示一条消息,一次只设置一个超时时间,并且只会在最后一次点击后的指定时间间隔内停留:

let showError = (() => {
  let timeoutID;
  return () => {
    let el = document.getElementById('err0');
    el.style.visibility = 'visible';
    // Clear timeout if one might be running
    if (timeoutID) clearTimeout(timeoutID);
    // Set timer for 1,000 ms (1 second), clear timeoutID when finished
    timeoutID = setTimeout(()=>{
      el.style.visibility = 'hidden'; 
      timeoutID = null;
    }, 1000);
  };
})();
#err0 {
  visibility: hidden;
  color: red;
}
<button onclick="showError()">Show error</button>
<span id="err0">Error</span>