切换将 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>
我可以在 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>