0

外部の JavaScript ファイルを参照するページがあり、関数 onload を実行すると、エラーが発生します (ページが読み込まれる前に起動しているためだと思います)。「プロパティ 'innerHTML' を null に設定できません」

ページが読み込まれた後に run() を起動するには、ここで何をする必要がありますか?

HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript" src="js/test.js"></script>
</head>
<body>
    <div id="test"></div>
</body>
</html>

JS

window.onload = run();

function run() {
    document.getElementById("test").innerHTML = "found it";
}
4

2 に答える 2

2

代わりにこれを試してください:

window.onload = run

実行すると、window.onload = run()すぐに実行され、返されたrun()ものは何でもプロパティに割り当てられます。これが正しく動作しない理由です。window.onload

于 2014-06-25T17:39:38.037 に答える
2

そのはず:

window.onload = run;

あなたがするとき:

window.onload = run();

実際には という関数を実行runし、その戻り値 (undefinedこの場合) を に代入していwindow.onloadます。

この関数は、ページが読み込まれる前に実行されます (を実行して明示的に実行しているためrun())。その時点ではdivwith idtestは存在しません。これが、エラーが発生する理由です。

于 2014-06-25T17:39:53.640 に答える