JS如何动态显示时间?

JavaScript012

JS如何动态显示时间?,第1张

JS显示动态的日期时间,参考如下:

<body>  

<span id="localtime">2013-10-30 12:33:02  星期三</span>  

<script type="text/javascript">  

function showLocale(objD)  

{  

    var str,colorhead,colorfoot  

    var yy = objD.getYear()  

    if(yy<1900) yy = yy+1900  

    var MM = objD.getMonth()+1  

    if(MM<10) MM = '0' + MM  

    var dd = objD.getDate()  

    if(dd<10) dd = '0' + dd  

    var hh = objD.getHours()  

    if(hh<10) hh = '0' + hh  

    var mm = objD.getMinutes()  

    if(mm<10) mm = '0' + mm  

    var ss = objD.getSeconds()  

    if(ss<10) ss = '0' + ss  

    var ww = objD.getDay()  

    if  ( ww==0 )  colorhead="<font color=\"red\">"  

    if  ( ww > 0 && ww < 6 )  colorhead="<font color=\"red\">"  

    if  ( ww==6 )  colorhead="<font color=\"red\">"  

    if  (ww==0)  ww="星期日"  

    if  (ww==1)  ww="星期一"  

    if  (ww==2)  ww="星期二"  

    if  (ww==3)  ww="星期三"  

    if  (ww==4)  ww="星期四"  

    if  (ww==5)  ww="星期五"  

    if  (ww==6)  ww="星期六"  

    colorfoot="</font>"  

    str = colorhead + yy + "-" + MM + "-" + dd + " " + hh + ":" + mm + ":" + ss + "  " + ww + colorfoot  

    return(str)  

}  

function tick()  

{  

    var today  

    today = new Date()  

    document.getElementById("localtime").innerHTML = showLocale(today)  

    window.setTimeout("tick()", 1000)  

}  

tick()  

</script>  

  

</body>

先看浏览器报错(去控制台):

ReferenceError: Can't find variable: startTime

global code — xxx.html:1

说明无法找到startTime函数。因为你把它定义在了xianshi()内部,只有xianshi()内部才能调用startTime。代码执行速度很快,所以当setTimeout在500ms之后试图执行"startTime()"的时候,xianshi早已被执行完毕,运行环境已经不在xianshi里了。setTimeout是window的函数(window.setTimeout),这时候js的作用环境是全局(window),而它无法在全局范围内找到startTime,所以报错。

方法一:把startTime定义为全局函数:

function startTime(){

    // ...        

    document.getElementById("shijian").innerHTML=h+":"+m+":"+s

    t=setTimeout('startTime()',500)

}

function xianshi() {

    // ...

    startTime()

}

方法二:传入一个函数给setTimeout(js的闭包)

 t = setTimeout(function(){startTime()}, 500)