dポイントプレゼントキャンペーン実施中!

getElementByIdでdivタグのオブジェクトを取得したいのですが、nullとなってしまいます。
以下のコードのどこがいけないのでしょうか。
---
<div id='a'></div>

<script language="javascript">// <!--
var a_ = document.getElementById('a');
document.write(a_);
// --></script>
---

A 回答 (4件)

さらに実験



<div id='a'></div>
<div></div>
<script type"text/javascript">// <!--
var a_ = document.getElementById('a');
document.write(a_);
// --></script>

これはnullですが

<div id='a'></div>
<div>あ</div>
<script type"text/javascript">// <!--
var a_ = document.getElementById('a');
document.write(a_);
// --></script>

これは[object]や[HTMLdivElement]が返りました。
    • good
    • 2

訂正


【誤】文字列div
【正】divの子の文字列(テキストノード)
    • good
    • 3

ひょっとしたら文書の該当箇所が読み込まれてから


documentに反映されるまでに時間がかかっているのかもしれません。

当方による質問文掲示ソースの検証では
IE 7およびMinefield(Firefox 3.0a7pre)では
nullが吐かれたのに対し,

Opera 9.22,Safariは[object HTMLDivElement]を返したからです。

DOMがきちんと読み込まれたであろうタイミングで下のソースの文字列divをクリックした場合,
MinefieldやIEもきちんと[object]や[HTMLParagraphElement]を返したため,
空であるときに必ずnullが帰るかというとそうわけでもないようです。
(ただ、確かに文字列が子として含まれるときは該当の現象は発生しませんでした)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>Q3201738 テストケース1</title>
<style type="text/css">

</style>
<script type="text/javascript">
function hoge(){
alert(document.getElementById("hoge"));
}
</script>
</head>
<body>
<div onclick="hoge();">hoge</div>
<p id="hoge" />
</body>
</html>
    • good
    • 1

divの中身が空の場合はnullを返すみたいですよ

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!