切换将 setinterval 设置为 on 的函数

toggle a function that sets the setinterval on

我可以在 20 个地方手动添加对函数 soapFlow() 的调用。但我宁愿切换一个设置 setinterval on 和 leaves on:

的函数
<li onclick="pre_reg_on();" >auto-reg</li>

function greet() {setInterval(soapFlow, 5000);}

function pre_reg_on () {greet();}

它应该每 5 秒调用一次函数 greet(),但它只调用一次。

setInterval() 应该在您希望它从中执行的函数之外调用。另外,为避免使用多个计时器,您应该始终在设置新计时器之前清除之前的计时器:

function greet() {
  console.log("greet() executed " + Date())
}

function pre_reg_on() {
  stopInterval();
  greet(); //execute imediately
  greet.interval = setInterval(greet, 5000);
}

function stopInterval()
{
  if (!greet.interval)
    return;

  clearInterval(greet.interval); // make sure clear previous interval;
  console.log("timer stopped " + Date());
  delete greet.interval;
}
<li onclick="pre_reg_on();">auto-reg</li>
<li onclick="stopInterval();">stop</li>