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