1

我刚刚开始学习 javascirpt,并且正在尝试制作自己的时钟小部件。似乎当我使用“ourDate.toLocalString()”时,它只显示调用函数时的时间。所以我想我必须每秒连续重复该功能,以使其连续保持当前时间。但我遇到的问题是当我启动脚本时,它只重复一次该功能。我究竟做错了什么?下面是代码:

function updateclock(){
ourDate = new Date();
document.write(ourDate.toLocaleString());
}

function startclock() {
updateclock();
setInterval("updateclock()", 1000); 
}
4

2 回答 2

5

问题是document.write。如果您在文档加载后调用它,它将覆盖整个文档,包括您的startclock函数,无法再调用。

改为更新 HTML 元素的内容:

<div id="clock"></div>
<script type="text/javascript">
function updateclock(){
    ourDate = new Date();
    document.getElementById("clock").innerHTML = ourDate.toLocaleString();
}

function startclock() {
    updateclock();
    setInterval(updateclock, 1000); 
}
startclock();
</script>

http://jsfiddle.net/Ys87F/

另外:不要将字符串传递给setInterval(或setTimeout),而是传递函数名。

于 2012-05-11T01:04:06.580 回答
0

你想这样做:

setInterval(updateclock, 1000);
于 2012-05-11T00:55:42.723 回答