28
<html>
<head>
    <title>Test javascript</title>

    <script type="text/javascript">
        var e = document.getElementById("db_info");
        e.innerHTML='Found you';
    </script>
</head>
<body>
    <div id="content">
        <div id="tables">

        </div>        
        <div id="db_info">
        </div>
    </div>
</body>
</html>

私が使用するalert(e);と、それが表示されnullます....そして明らかに私は画面上に「あなたを見つけた」ものを何も表示しません。私は何が間違っているのですか?

4

5 に答える 5

78

問題は、要素が存在する前にその要素にアクセスしようとしていることです。ページが完全に読み込まれるまで待つ必要があります。考えられるアプローチは、onloadハンドラーを使用することです。

window.onload = function () {
    var e = document.getElementById("db_info");
    e.innerHTML='Found you';
};

ただし、最も一般的なJavaScriptライブラリはDOM対応のイベントを提供します。window.onloadすべての画像も待つので、これはより良いです。ほとんどの場合、それは必要ありません。

もう1つの方法は、スクリプトタグを終了タグの直前に配置することです。これは、スクリプトタグの前</body>にあるすべてのものが、実行時に読み込まれるためです。

于 2010-12-21T10:55:02.660 に答える
3

スクリプトタグ内でコードを実行するタイミングをブラウザはどのように認識しますか?したがって、ウィンドウが完全にロードされた後にコードを実行するには、

window.onload = doStuff;

function doStuff() {
    var e = document.getElementById("db_info");
    e.innerHTML='Found you';
}

もう1つの方法は、終了タグ<script...</script>の直前に保持することです。</body>

于 2010-12-21T10:56:33.223 に答える
1

スクリプトは、本体のDOMが構築される前に実行されます。すべてを関数に入れてonload、body要素のから呼び出します。

于 2010-12-21T10:54:45.487 に答える
1

bodyonloadイベントで、タグを閉じる直前にコードを実行します。あなたはそれをしている瞬間にそこにない要素を見つけようとします。

于 2010-12-21T10:55:05.397 に答える
1

スクリプトは、要素が存在する前に呼び出されます。

次のいずれかを試してください。

  1. コードを関数にラップし、bodyonloadイベントを使用して呼び出します。
  2. ドキュメントの最後にスクリプトを配置します
  3. スクリプトタグ宣言にdefer属性を使用する
于 2010-12-21T10:58:01.400 に答える