setTimeout()内的document.write()覆盖所有页面

时间:2017-03-25 17:28:50

标签: javascript jquery html

我用document.write()调用函数来添加内联内容(广告横幅):

<body>
Page content start<br>
    <script>
    function postContent(){
      document.write('added content');
    }
    postContent();
    </script>
<br>Page content end
</body>

在页面上我得到了:

Page content start 
added content
Page content end

我希望延迟添加此内容,但在setTimeout()文件内部覆盖所有内容。

<body>
Page content start<br>
<script>
    function postContent(){
        document.write('added content');
    }
    setTimeout(function () {
        postContent();
    }, 3000);
</script>
<br>Page content end
</body>

我在3s内的页面上得到了:

added content

如何用延迟调用带有document.write()的函数,不要覆盖所有页面?

注意:我无法访问插入广告横幅的功能。

2 个答案:

答案 0 :(得分:0)

如果在加载文档后运行document.write - 它会覆盖整个文档。因此,您应该选择一个特定元素,并将内部html文本添加到其中:

document.getElementById("container").innerHTML="added content";

答案 1 :(得分:0)

您可以使用跨度并使用innerHTML将行写入其中。

write()函数第一次起作用,因为它加载与文档相同的时间,因此在其间添加了行。

第二次重新加载文档时删除所有html。

<body>
Page content start<br>
<span id="pid"></span>
<script>
    function postContent(){
        document.getElementById("pid").innerHTML='added content';
    }
    setTimeout(function () {
        postContent();
    }, 3000);
</script>
<br>Page content end
</body>