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)