我有一个要求,我需要重复调用一个调用 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)
如果我单击“开始时间”按钮两次,中间没有单击“停止时间”,则该功能不会停止。这只是场景的一个例子。无论如何要解决这个问题?
在您的 startFunction 中,只需清除任何现有间隔。否则,您将创建多个间隔,但只存储对创建的最后一个间隔的引用。
例如:
function myStartFunction(){
if(myVar) {
myStopFunction();
}
myVar = setInterval(function(){ myTimer() }, 1000);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |