Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.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时钟运行计时器功能出现故障?_Javascript - Fatal编程技术网

javascript时钟运行计时器功能出现故障?

javascript时钟运行计时器功能出现故障?,javascript,Javascript,我想知道这段代码哪里出了问题,基本上startTime()只运行一次,所以时钟不会更新。有人能告诉我如何解决这个问题吗 JS 函数开始时间(){ var today=新日期(); var h=today.getHours(); var m=today.getMinutes(); var s=today.getSeconds(); //在数字前面加一个零,设置超时等待指定的时间,完成其工作,然后停止。 您需要setInterval,它无限期地重复相同的作业 对不起,我在读你的代码时发了个屁。没意识

我想知道这段代码哪里出了问题,基本上startTime()只运行一次,所以时钟不会更新。有人能告诉我如何解决这个问题吗

JS

函数开始时间(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();

//在数字前面加一个零,设置超时等待指定的时间,完成其工作,然后停止。 您需要
setInterval
,它无限期地重复相同的作业

对不起,我在读你的代码时发了个屁。没意识到你在函数末尾调用了setTimeout


不过,使用setInterval而不是setTimeout仍然有一个有效的用例。假设函数本身需要2毫秒才能完成。不是每半秒更新一次,而是每502毫秒更新一次时钟。因此,在100次迭代之后,它将执行。离它应该执行的位置还有2秒。它可能是不明显,但1秒的设置间隔将使您的时钟实际显示为每秒都在滴答作响,正如它应该的那样。

setTimeout
等待指定的时间量,完成其工作,然后停止。 您需要
setInterval
,它无限期地重复相同的作业

对不起,我在读你的代码时发了个屁。没意识到你在函数末尾调用了setTimeout


不过,使用setInterval而不是setTimeout仍然有一个有效的用例。假设函数本身需要2毫秒才能完成。不是每半秒更新一次,而是每502毫秒更新一次时钟。因此,在100次迭代之后,它将执行。离它应该执行的位置还有2秒。它可能是不明显,但设置间隔1秒会使时钟实际上每秒都在滴答作响,这是应该的。

您只是在函数的作用域上遇到了问题

短期解决方案:改变

t=setTimeout( 'startTime()',500);
对这个

t = setTimeout( startTime, 500 );
说明:

函数
startTime
窗口的函数中定义。onload
仅在该函数中可见(以及其中的函数)

在您的代码中,JavaScript等待500毫秒,然后尝试执行代码
startTime()
。它在全局范围(即
setTimeout
的执行范围)中搜索函数
startTime
),但找不到任何引用,从而导致错误和代码无法工作


我的代码将函数
startTime
的引用传递到
setTimeout
。这样,引擎就不必搜索处理程序,也不会在该点失败。在调用
setTimeout
时,您处于
窗口的范围内。卸载
,这样引擎就知道函数
startTime>setTimeout

的处理程序。您只是在函数的作用域上遇到了问题

短期解决方案:改变

t=setTimeout( 'startTime()',500);
对这个

t = setTimeout( startTime, 500 );
说明:

函数
startTime
窗口的函数中定义。onload
仅在该函数中可见(以及其中的函数)

在您的代码中,JavaScript等待500毫秒,然后尝试执行代码
startTime()
。它在全局范围(即
setTimeout
的执行范围)中搜索函数
startTime
),但找不到任何引用,从而导致错误和代码无法工作

我的代码将函数
startTime
的引用传递到
setTimeout
。这样,引擎就不必搜索处理程序,也不会在该点失败。在调用
setTimeout
时,您处于
窗口的范围内。卸载
,这样引擎就知道函数
startTime>
并可以处理传递给
setTimeout
的处理程序