GetElementById()で要素を取得しようとしていますが、要素が存在してもnullを返します。私は何を間違えていますか?
<html>
<head>
<title>blah</title>
<script type="text/javascript">
alert(document.getElementById("abc"));
</script>
</head>
<body>
<div id="abc">
</div>
</body>
これをdocument
load
イベントに配置する必要があります。 DOMは、スクリプトが実行されるまでにabc
に到達していません。
DOMがロードされる前にスクリプトが実行されます。これを修正するには、コードをwindow.onload
次のような関数:
window.onload = function() {
alert(document.getElementById("abc"));
};
別の方法として、script
を閉じる</body>
タグ。
ロードイベントにアタッチしない場合は、スクリプトを本文の下部に配置するだけで、スクリプトは最後に実行されます。
<html>
<head>
<title>blah</title>
</head>
<body>
<div id="abc">
</div>
<script type="text/javascript">
alert(document.getElementById("abc"));
</script>
</body>
</html>
これは、ページがレンダリングされる前にスクリプトが実行されるためです。
証拠として、この属性をbodyタグに追加します。
<body onload="alert(document.getElementById('abc'));" >
しかし、それは存在せず、HTMLのその時点ではありません。 HTMLドキュメントは、プログラムが実行されるように、上から下に解析されます。最善の解決策は、スクリプトタグをページの下部に配置することです。 JavaScriptをonloadイベントに添付することもできます。