Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.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
clearInterval()不在使用JavaScript的时钟计时器上工作_Javascript_Html_Setinterval_Jsfiddle_Clearinterval - Fatal编程技术网

clearInterval()不在使用JavaScript的时钟计时器上工作

clearInterval()不在使用JavaScript的时钟计时器上工作,javascript,html,setinterval,jsfiddle,clearinterval,Javascript,Html,Setinterval,Jsfiddle,Clearinterval,一般来说,我对JavaScript和编程非常陌生。我目前正忙于处理一些代码,不知是否有人能给我一些建议 背景: 我使用的代码相当简单;有一个时钟,当前时间在setInterval上运行,以秒为单位进行更新 时钟下方有一个显示“停止”的按钮,按下该按钮时,它将清除间隔,然后该按钮将显示“开始”。如果再次按下显示“开始”的按钮,它将在当前时间继续时钟计时器。基本上,这一个按钮可以切换时钟的间隔,根据它的状态,这个按钮会显示“开始”或“停止” 是我在创建正在使用的代码时最初引用的位置。这就是我学习se

一般来说,我对JavaScript和编程非常陌生。我目前正忙于处理一些代码,不知是否有人能给我一些建议

背景:

我使用的代码相当简单;有一个时钟,当前时间在setInterval上运行,以秒为单位进行更新

时钟下方有一个显示“停止”的按钮,按下该按钮时,它将清除间隔,然后该按钮将显示“开始”。如果再次按下显示“开始”的按钮,它将在当前时间继续时钟计时器。基本上,这一个按钮可以切换时钟的间隔,根据它的状态,这个按钮会显示“开始”或“停止”

是我在创建正在使用的代码时最初引用的位置。这就是我学习setInterval和clearInterval如何工作的地方。我还获取了示例中的一些代码,并对其进行了调整,以便可以尝试使时钟计时器关闭和打开

代码:

var clock09=window.setInterval(mytimer091000);
函数myTimer09(){
var d=新日期();
变量t=d.toLocaleTimeString();
document.getElementById(“req09”).innerHTML=
“+t+”;
}
函数切换10(){
var button=document.getElementById(“button10”).innerHTML;
如果(按钮==“停止”){
窗口清除间隔(时钟09);
document.getElementById(“button10”).innerHTML=“开始”;
}否则{
clock09=window.setInterval(MyTimer091000);
document.getElementById(“button10”).innerHTML=“停止”;
}
}


Stop
您正在myTimer09函数中声明一个新的日期变量,因此每次调用它时,它都会显示当前时间。您应该在函数之外声明时间,然后将其传递给函数。停止计时器时,应保存时间值,以便使用该值重新启动。

修复计时器启动和停止的一种方法是将javascript移到HEAD标记之间,以便在加载html时声明函数。我做了这个工作:

<html>
  <head>
    <title>Stuff</title>

    <script >

      var clock09 = window.setInterval(myTimer09, 1000);

      .... your code

   </script>

  </head>
  <body>
    <span class="center" id="req09"></span>
    <button type="button" id="button10" onclick="toggle10()" class="button">Stop</button>

  </body>
</html>

东西
var clock09=window.setInterval(mytimer091000);
.... 你的代码
停止

这似乎是JSFIDLE的一个问题

onclick处理程序正在查找实际未定义的window.toggle10(在控制台中检查错误)。 看来这是

我已经将您的代码C&Ped到一个JSbin中,如前所述

问题: 这是因为默认的加载类型设置为onLoad,它将javascript代码包装在
window.onLoad=function(){}
中,因此函数的范围被限制为
onLoad
函数,在以下外部不可用:

解决方案: 单击Fiddle的Javascript部分中的Javascript设置,将其更改为No wrap-in body,它将起作用,因为这将把Javascript代码放在
body
标记中

补充说明: 您的代码也通过StackOverflow代码段工作:

/*我的问题*/
var clock09=window.setInterval(mytimer091000);
函数myTimer09(){
var d=新日期();
变量t=d.toLocaleTimeString();
document.getElementById(“req09”).innerHTML=
“+t+”;
}
函数切换10(){
var button=document.getElementById(“button10”).innerHTML;
如果(按钮==“停止”){
窗口清除间隔(时钟09);
document.getElementById(“button10”).innerHTML=“开始”;
}否则{
clock09=window.setInterval(MyTimer091000);
document.getElementById(“button10”).innerHTML=“停止”;
}
}
/*W3S问题*/
var myVar=setInterval(myTimer,1000);
函数myTimer(){
var d=新日期();
document.getElementById(“demo”).innerHTML=
d、 toLocaleTimeString();
}

停止



停止时间
只需将
函数toggle10(){
更改为
document.toggle10=function()即可修复小提琴{
我刚刚意识到代码在SO代码段中工作!不幸的是,我正在处理的代码需要在我正在处理的index.html文件中,这也是我没有得到我想要的结果的地方。我正在尝试查看给出的任何建议是否能解决问题。注意:所有的javascipt位于一个外部文件.js文件中,该文件链接在HEAD中,就在BODY标记之前。我也没有任何控制台错误。到目前为止,所有建议中,将此问题的javascript代码放在HEAD标记之间对我有效!现在,我的外部.js文件链接,后面是时钟计时器的js代码。看像这个帖子越来越大,你原来的JS问题不被称为内联,不是吗?对于外部JS文件问题,这将是一个不同的问题,考虑把它单独发布。我想我会继续在HTML文件中发布。在发布之前,我会稍微对谷歌的外部JS文件问题做一点说明。还有一件事。谢谢大家,谢谢所有的建议!我把js代码放在头标签之间,就像@Matz提到的那样。结果:它非常有效!我很高兴它能起作用,但我需要找到一个解决方案,我不需要把它包括在头标签中,我可以把它放在外部文件中。最坏的情况下,这就是我要做的。有什么建议吗ions?只需将javascript放入一个文件中..说timerstuff.js并将脚本标记更改为:。它仍然在head标记中,但代码在一个单独的文件中。尝试了它,但它只显示了当前时间,没有更新1秒间隔的时间。另外,我需要的是当按钮“开始”时按下时,时钟计时器将继续,但使用当前时间,而不是停止时的值。因此,我认为这不起作用。谢谢您的建议