setInterval、clearInterval 不起作用

Pra*_*jee 0 javascript

我有一个要求,我需要重复调​​用一个调用 setInterval 的函数。我遇到的问题是,如果生成一个函数(比如每 1 秒)并且使用 setInterval 设置它;如果我们调用 setInterval 两次/多次而函数之间没有 clearInterval,则函数会继续调用自身。前任 :

<!DOCTYPE html>
 <html>
 <body>

  <p>A script on this page starts this clock:</p>

   <p id="demo"></p>
   <button onclick="myStartFunction()">Start time</button>
   <button onclick="myStopFunction()">Stop time</button>

<script>

var myVar;
function myStartFunction(){
  myVar = setInterval(function(){ myTimer() }, 1000);
 }

function myTimer() {
var d = new Date();
var t = d.toLocaleTimeString();
document.getElementById("demo").innerHTML = t;
}

function myStopFunction() {
  console.log(myVar);
  clearInterval(myVar);
  console.log(myVar);
}
 </script>

 </body>
 </html>
Run Code Online (Sandbox Code Playgroud)

如果我单击“开始时间”按钮两次,中间没有单击“停止时间”,则该功能不会停止。这只是场景的一个例子。无论如何要解决这个问题?

Cod*_*gue 5

在您的 startFunction 中,只需清除任何现有间隔。否则,您将创建多个间隔,但只存储对创建的最后一个间隔的引用。

例如:

function myStartFunction(){
  if(myVar) {
    myStopFunction();
  }
  myVar = setInterval(function(){ myTimer() }, 1000);
 }
Run Code Online (Sandbox Code Playgroud)