32

以下のページをFF3.0で更新すると、Webページがクリアされると思っていましたが、クリアされませんでした。

なぜ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>
4

7 に答える 7

50

document.body.innerHTML = '';bodyはい、クリアします。innerHTMLただし、コードが実行された時点でそのままクリアされます。画像とスクリプトが実際に に入る前にコードを実行すると、bodyをクリアしようとしますが、クリアするbodyものはありません。

をクリアしたい場合は、にコンテンツが入力されたbody後にコードを実行する必要があります。これを行うには、ブロックを の最後の子としてbody配置して、コードが実行される前にすべてがロードされるようにするか、何らかの方法でイベントをリッスンする必要があります。<script>bodydom:loaded

于 2010-02-12T09:04:44.373 に答える
15

Douwem の回答を詳しく説明するには、script タグでコードを onload に入れます。

<script type="text/javascript">
    window.onload=function(){
       document.body.innerHTML = "";
    }
</script>
于 2010-02-12T09:19:38.337 に答える
3

Douwe MaanとErikの回答に同意する一方で、ここには他にも役立つことがいくつかあります。

まず、headタグ内で、別のJavaScriptファイルを参照できます。このファイルは再利用できます。

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

ここで、common.jsは、commonと呼ばれる最上位ディレクトリにある再利用可能な関数ファイルです。

次に、setTimeoutを使用してスクリプトの操作を遅らせることができます。例:

setTimeout(someFunction, 5000);

2番目の引数はミリ秒単位です。元のコードスニペットで何かを遅らせようとしているように見えるので、これについて言及します。

于 2012-01-04T21:28:21.433 に答える
0

何を達成しようとしているのかはわかりませんが、jQuery の使用を検討することをお勧めします。jQuery を使用すると、コードを head タグまたは別のスクリプト ファイルに配置し、DOM のロード後にコードを実行することができます。

次に、次のようなことができます。

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

要素を選択的に削除するだけでなく (すべての DIV、特定のクラスの DIV のみなど)

于 2010-02-12T09:25:20.613 に答える
-1

次の機能を使用して画面をクリアします

var clear_body = function (){
    var lista = document.body.childNodes;
    for (var i = lista.length - 1; i >= 0 ;i--){
        document.body.removeChild(lista[i])
    }
}
于 2016-12-30T13:26:26.223 に答える