- 締切済み
JavaScriptを使ってWebページにメッセージを表示させる
html内に<div id="info"></div>と書き、それをjavascriptのプログラムから「こんにちは」というメッセージを表示させるようにしたいのですが、何度試しても製作途中の段階でdocument.getElementById(id) has no propertiesというエラーが出てしまいます。(←Firebugでエラーが検出されます) どこが間違っているのか教えていただけると助かります。 ================= HTML ================= <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr"> <head> <meta http-equiv="content-script-type" content="text/javascript" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>map</title> <link rel="stylesheet" type="text/css" href="common/css/main.css" /> <script src="common/js/main.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div id="info"></div> </body> </html> ================= JavaScript ================= var map window.onload = function() { load(); } function _d(id, htmlTxt) { document.getElementById(id).innerHTML = htmlTxt; } _d("info","こんにちは");
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Werner
- ベストアンサー率53% (395/735)
window.onload = function() {/*...*/} は無名関数を代入してるわけだから別に間違ってるわけではない。 質問文で動かないのは関数_dの実行タイミングが悪いんだと思う。 _dが実行されたとき<div id="info"></div>がまだ存在してない(描画されてない)から動かない。 > window.onload = function() { > _d("info","こんにちは"); > } のようにしたら動くと思うよ。
- auty
- ベストアンサー率58% (284/486)
掲載されているHTMLとJavaScriptが1つのファイルに含まれるとして考えて見ます。 ・ window.onload を使う場合、実行する関数名のみを設定します。 window.onload = load; function load() { _d("info","こんにちは"); } ・ <body>タグを使うとき、 <body onload='_d("info","こんにちは");'> したがって、window.onloadの場合、以下のようになります。 -------------------------------------------------------------------- <script type="text/javascript"> <!-- window.onload = load; function load() { _d("info","こんにちは"); } function _d(id, htmlTxt) { document.getElementById(id).innerHTML = htmlTxt; } //--> </script> </head> <body> <div id="info"></div> </body>