document.body.innerHTML =“”清除网页吗?

时间:2010-02-12 08:56:51

标签: javascript firefox dom innerhtml

当我在FF 3.0中刷新下面的页面时,我希望网页能够清除,但事实并非如此。

为什么document.body.innerHTML = ""没有清除页面?

更新 我正在尝试在新页面加载时刷新期间清除上一个屏幕。我实际上想看到页面清除,等待然后下一个js运行。页面加载后我不想清除屏幕。

...
<body>
    <script type="text/javascript">
        document.body.innerHTML = "";
        for (var i = 0; i < 1000000000; i++) {
        }
    </script>

    <img src="images/web.gif" /><br />

    <script type="text/javascript">
        document.write( "hello<br />");
    </script>

    <img src="images/warning.png" /><br />

</body>

7 个答案:

答案 0 :(得分:43)

document.body.innerHTML = '';确实清除body,是的。但它会清除代码运行时的innerHTML。当您在图像和脚本实际位于body之前运行代码时,它会尝试清除body,但没有什么可以清除的。

如果要清除body,则必须在body填充内容后运行代码。您可以通过将<script>块作为body的最后一个子进程来执行此操作,以便在代码运行之前加载所有内容,或者您​​必须使用某种方式来侦听dom:loaded事件。

答案 1 :(得分:14)

要阐述Douwem的答案,请在脚本标记中将代码放入onload中:

<script type="text/javascript">
    window.onload=function(){
       document.body.innerHTML = "";
    }
</script>

答案 2 :(得分:3)

虽然同意Douwe Maan和Erik的回答,但在这里还有其他一些你可能会觉得有用的东西。

首先,在您的head标签中,您可以引用一个单独的JavaScript文件,然后可以重复使用:

<script language="JavaScript" src="/common/common.js"></script>

其中common.js是名为common的顶级目录中的可重用函数文件。

其次,您可以使用setTimeout延迟脚本的操作,例如:

setTimeout(someFunction, 5000);

第二个参数以毫秒为单位。我提到这一点,因为您似乎试图延迟原始代码段中的某些内容。

答案 3 :(得分:0)

我不确定你想要实现什么,但是你可能想要考虑使用jQuery,它允许你将代码放在head标签或单独的脚本文件中,并且仍然在DOM之后执行代码装了。

然后您可以执行以下操作:

$(document).ready(function() {
$(document).remove();
});

以及有选择地删除元素(所有DIV,只有具有某些类别的DIV等)

答案 4 :(得分:0)

正如其他人所说,一个简单的解决方案是将脚本放在页面底部,因为所有DOM元素都是从上到下同步加载的。否则,我认为您正在寻找的是document.onload(() => {callback_body})window.onload(() => {callback_body}),就像Erik所说的那样。如Douwe Maan所说,它们使您可以在触发dom:loaded事件时执行脚本。不确定window.onload的属性,但是document.onload仅在加载所有元素,css和脚本之后才触发。就您而言:

<script type="text/javascript">
    document.onload(() =>
        document.body.innerHTML = "";
    )
</script>

答案 5 :(得分:0)

使用document.body.innerHTML = ''; 可行!只是说,如果使用HTMLDOM或在function上),可以使用
document.writeln('');,但只能使用onClickonDoubleClick: )

答案 6 :(得分:-1)

我使用

功能清除我的屏幕
var clear_body = function (){
    var lista = document.body.childNodes;
    for (var i = lista.length - 1; i >= 0 ;i--){
        document.body.removeChild(lista[i])
    }
}