javascript小时钟t=setTimeout('startTime()',500)为什么隔500毫秒就刷新

<html>
<head>
<script type="text/javascript">
function startTime()
{
var today=new Date() //获取当前时间
var h=today.getHours() //获取当前时间的小时
var m=today.getMinutes() //获取当前时间的分钟
var s=today.getSeconds() //获取当前时间的秒钟
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s) //调用checkTime()函数使分钟和秒钟一直以两个占位符来显示
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500) /*重点是这行,不是很理解,,我的理解是过500毫秒后再次调用函数刷新时间*/
}

function checkTime(i) //当分钟和秒钟是个位数的时候,也统一为0x来显示
{
if (i<10)
{i="0" + i}
return i
}
</script>
</head>

<body onload="startTime()">
<div id="txt"></div>
</body>
</html>

对于这个问题,只要刷新时间小于1秒,都是可以的。这样可以及时更新秒数。

这里的setTimeout是递归执行的。也就是在执行一次后,时间更新以后,才会设置下次的setTimeout。这里执行更新时间的代码也是要耗费时间的。因为javascript是脚本语言,又基于浏览器,性能比较差。而且更新时间是dom操作,比较慢。所以这样能保证精度,避免延迟。

还有一点,假如在开始执行程序时已经是3分5.5秒了。如果一秒更新一次,在3分6.5秒后才会更新秒数,这样更新就不及时,对不对?

望采纳,您的采纳就是我的动力!追问

也就是setTimeout()确实每隔500毫秒更新一次,但是代码执行也需要时间,,设置为500毫秒就是出于代码执行也需要时间的考虑,以保证在实际上更高的精度,,,我在图片上做的注释理解并没有太大错误的是吧

追答

没错啊。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-09-11
setTimeout(function,n)表示的是在n毫秒之后执行function这个方法或者是代码。
在上面你问的问题的程序里面你想要500持续刷新,那么在function里面必须要再次包含一个
setTimeout(function,n)
这样算作是迭代,这样才可以刷洗,如果在function外面写这个,就只会执行一次
第2个回答  2015-10-25

javascript通过setTimeout函数暂停一段时间后执行代码,可以实现一些特殊的效果,示例如下:

function setbgColor()
{
       document.bgColor="#000000";
}
setTimeout(setbgColor, 1000);
setTimeout(function setbgColor(){document.bgColor="#000000";}, 1000);
setTimeout("document.bgColor='#000000'", 1000);

javascript小时钟t=setTimeout('startTime()',500)为什么隔500毫秒就...
对于这个问题,只要刷新时间小于1秒,都是可以的。这样可以及时更新秒数。这里的setTimeout是递归执行的。也就是在执行一次后,时间更新以后,才会设置下次的setTimeout。这里执行更新时间的代码也是要耗费时间的。因为javascript是脚本语言,又基于浏览器,性能比较差。而且更新时间是dom操作,比较慢。所以这样...

这段JavaScript代码有几个问题谁帮我解释一下
2、t是setTimeout函数的返回值,这样的话如果想让setTimeout停止就可以用clearTimeout(t);来实现。当然,如果不需要这么做,也可以把t=省去,即setTimeout('startTime()',500);3、那个500的意思是500毫秒,整个setTimeout函数的意思就是再过500毫秒就再次运行startTime这个函数,这样的话startTime...

javascript 时间显示问题
document.getElementById('txt').value=h+":"+m+":"+s 就可以了

请问利用Javascript如下定义时钟为何不对呢?
先看你的代码:加载html时,到while语句就已经死循环了,不会完全加载且浏览器本窗口处于阻塞状态。再者,就算加载完毕,onload表示加载完毕后执行startTime方法一次,所以不会有你想要的效果。<html><head><script type="text\/javascript">function start(){ startTime(); setInterval(startTime, ...

JS时钟程序运行出错,缺少对象
fuction aClock()改成 function aClock()就可以了..

JAVASCRIPT怎么样制作动态时间显示,给我代码也可以,谢谢啦
window.document.the_form.the_text.value = the_time; \/\/把表格的值重新写一遍,相当于刷新时间 the_timeout= setTimeout('displayTime();',500); \/\/每半秒钟执行一次该函数,即500毫秒 } function fixTime(the_time) { if (the_time <10) { the_time = "0" + the_time; } return the_...

在网页中显示动态时钟。(setTimeout)小时、分钟、秒数都表示为两位符号...
<script type="text\/javascript"> var a ="";function getTime(){ \/\/获取当前的系统时间 var t = new Date();\/\/根据当前时间获取年、月、日、小时、分、秒 var year = t.getFullYear();var month = t.getMonth()+1;\/\/获取当前月份时要加1 var day = t.getDate();var hour = t...

javascript动态时钟 IE中不能动态显示,而在谷歌浏览器中却能,下面是...
好像IE不支持document.open()\/document.close()另外,setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式 不需要通过setTimeout来调用自身,这部分代码在FF下也有问题,因为在函数内部调用自己,当自身还没有声明完成时,会有问题的。时间哪部分没有问题呀,你用下面的测试代码试一试:...

网页中显示动态时钟。(setTimeout)小时、分钟、秒数都表示为两位符号...
取实例名:time 新建一层,第一帧动作:t=new Date();\/\/定义时间对象 h=t.getHours();m=t.getMinutes();s=t.getSeconds();if(h<10){h="0"+h;} if(m<10){m="0"+m;} if(s<10){s="0"+s;} if(h>12){ h="下午 0"+(h-12);} time.text=h+":"+m+":"+s;

求一个网页日期显示html代码
m=checkTime(m)s=checkTime(s)document.getElementById('txt').innerHTML=h+":"+m+":"+s t=setTimeout('startTime()',500)} function checkTime(i){ if (i<10){i="0" + i} return i } \/\/上面的是时钟 <\/script> <\/head> <body onload="startTime()"> <div id="txt"><...

相似回答