我想在 10 秒后停止运行

时间:2021-04-08 05:08:45

标签: javascript

  • 我尝试在函数 olo() 中使用 setTimeout(clearInterval(MY_INT, 10000) 但它只运行了一次就停止了:/我可以把它放在哪里还是应该使用 for()?

没有 <script src></script> 标签,因为我使用的是在线编辑器。如果你们知道如何使 VScode 像在线编辑器一样,请提出建议。 *

const btn = document.getElementById('Button');
const target = document.getElementById('here');

btn.addEventListener('click', ()=>{
  
  
  function olo(){
  let loadingImage = document.createTextNode('**');
  target.appendChild(loadingImage);
    
  
  }

  const MY_INT = setInterval(olo ,1000)
})
<!DOCTYPE html>
<html>
<head>
  
  <title>Loading...</title>
</head>
<body>
  <div>
   
    <button id='Button'>load</button>
    <h1 id='here'></h1>
  </div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

  1. 10000 参数应该在 setTimeout 的参数中,但您在 clearInterval 中有它。

  2. 你不应该把它放在olo函数中,它应该在你设置了间隔之后。

  3. setTimout 需要回调,您已为其提供函数调用,将 clearInterval(MY_INT) 更改为匿名函数(或任何函数,但不是函数调用)。例如() => clearInterval(MY_INT)

使用上述修复完全清理您的代码(我稍微调整了时间以使其更易于使用):

btn.addEventListener("click", () => {
  function olo() {
    let loadingImage = document.createTextNode("*");
    target.appendChild(loadingImage);
  }

  const MY_INT = setInterval(olo, 500);
  setTimeout(() => clearInterval(MY_INT), 3000);
});

Sandbox with fix

相关问题