Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在停止时钟后使用setInterval()再次启动时钟_Javascript_Setinterval - Fatal编程技术网

Javascript 如何在停止时钟后使用setInterval()再次启动时钟

Javascript 如何在停止时钟后使用setInterval()再次启动时钟,javascript,setinterval,Javascript,Setinterval,我可以停止它,但如何在当前时间通过启动功能使其重新启动?为什么这样不行 <!DOCTYPE> <html> <head> </head> <body> <p id="demo"></p> <button onclick="stopFunction()">Stop time</button> <button onclick="startFunction()"&g

我可以停止它,但如何在当前时间通过启动功能使其重新启动?为什么这样不行

<!DOCTYPE>
<html>
<head>
</head>
<body>
    <p id="demo"></p>
    <button onclick="stopFunction()">Stop time</button>
    <button onclick="startFunction()">Start time</button>
</body>
</html>
将其更改为:

var t = d.toLocaleTimeString();

function myTimer()
{
    var d;

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

var myVar = setInterval(myTimer, 1000);

function stopFunction()
{
    clearInterval(myVar);
}

function startFunction()
{
    document.getElementById("demo").innerHTML = t;

    //Restart it here
    myVar = setInterval(myTimer, 1000); 
}

问题是你没有再次开始间歇。现在就可以了。

编辑:我输入了一些代码,在启动按钮运行时禁用它。这样做是个好主意,或者写一些逻辑来避免每次单击/运行时都继续调用
setInterval

<!DOCTYPE>
<html>
<head>
</head>
<body>
    <p id="demo"></p>
    <button id='stopButton' onclick="stopFunction()">Stop time</button>
    <button id='startButton' onclick="startFunction()">Start time</button>

<script type='text/javascript'>
var myVar;

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

function stopFunction() {
    clearInterval(myVar);
    document.getElementById("startButton").disabled = false; 
}

function startFunction() {
  myVar = setInterval(myTimer, 1000);
  document.getElementById("startButton").disabled = true; 

}

startFunction();
</script>
</body>
</html>

停止时间 开始时间 var-myVar; 函数myTimer(){ var d=新日期(); 变量t=d.toLocaleTimeString(); document.getElementById(“demo”).innerHTML=t; } 函数stopFunction(){ 净距(myVar); document.getElementById(“startButton”).disabled=false; } 函数startFunction(){ myVar=设置间隔(myTimer,1000); document.getElementById(“startButton”).disabled=true; } startFunction();
startFunction
中,您需要将
myVar
重新设置为setInterval。另外,在
startFunction
中,您引用的
t
不属于该函数的范围,因此它总是未定义的。这很好,但startFunction()中的“t”未定义,因为它位于myTimer()中函数的作用域。@DonRhummy实际上没有理由在
startFunction
中有第一行,因为
myTimer
将在一秒钟内更新anyway@CrayonViolent不完全是。间隔不会在一整秒钟内开始,因此他们可能希望在函数启动时获得一个新值。@DonRhummy我说它将在一秒钟内更新,是的。但无论如何,这和初始负载的延迟是一样的。看起来是一致的。但这是分裂hairs@DonRhummy不完全是。即使在我编辑之前,它也不完全一样。
<!DOCTYPE>
<html>
<head>
</head>
<body>
    <p id="demo"></p>
    <button id='stopButton' onclick="stopFunction()">Stop time</button>
    <button id='startButton' onclick="startFunction()">Start time</button>

<script type='text/javascript'>
var myVar;

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

function stopFunction() {
    clearInterval(myVar);
    document.getElementById("startButton").disabled = false; 
}

function startFunction() {
  myVar = setInterval(myTimer, 1000);
  document.getElementById("startButton").disabled = true; 

}

startFunction();
</script>
</body>
</html>