使用setInterval()而不清除以前的火灾

时间:2014-11-18 23:29:48

标签: javascript html5 setinterval

此功能有什么区别:

function printTime(){
        var now = new Date();
        var hours = now.getHours();
        var minutes = now.getMinutes();
        var seconds = now.getSeconds();
        document.write(hours+":"+minutes+":"+seconds+"<br />");
    }
    setInterval('printTime()', 1000);

这个功能:

function test(){
        document.getElementById("date").innerHTML = Date();
    }
    setInterval('test()', 1000);

这会阻止&#34; printTime&#34;从积极写入页面(而不是只发射一次),同时&#34;测试&#34;能够正常运作吗?

从我的所有实验中,我发现它仅在删除或更新上一部分时才起作用(即innerHTML)。是这样的,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

在页面最初加载完成后调用时,document.write()将清除当前文档并创建一个新的空白空文档。因此,您不能在定期间隔计时器中使用document.write()来更新页面,因为它将不断创建新的空文档。

相反,您需要通过添加新元素,删除元素或更改现有DOM元素的内容来修改现有DOM。

例如,你可以这样做。

HTML:

<div id="currentTime"></div>

代码:

function printTime(){
    var now = new Date();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds();
    document.getElementById("currentTime").innerHTML = hours + ":" + minutes + ":" + seconds;
}
setInterval(printTime, 1000);

此代码会定期使用当前时间更新currentTime div,并且不会干扰您可能希望在该页面上运行的其他代码。

相关问题