• ベストアンサー

下記コードの実行方法について質問です。

問題のコードは下記ですが、 bodyタグに onLoad="firstFunc()" と書かずに実行したいのですが、 スマートな方法はないでしょうか? よろしくお願いいたします。 <script type="text/javascript"> function firstFunc(){ var aFunc = document.getElementById('btn'); aFunc.onclick = function(){ alert('りんご'); } } </script> </head> <body onLoad="firstFunc()"> <button id="btn" name="ボタン">getElementByIdでonclickのイベントを追加できる。</button> </body>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

いちばんさいごに <script type="text/javascript"><!-- document.getElementById('btn').onclick = function(){alert('りんご')}; //--> </script> </body> </html>

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

一般的には、 document.body.addEventListener("load",firstFunc,false); function firstFunc(){ ....... } と書きます。addEventListenerだと同じ要素の同じイベントに複数の処理が登録できます。 document.body.onload=firstfunc; だと、別の箇所でうっかり、 document.body.onload=otherfunc; と書いちゃうと上書きされ、あとで登録した方だけしか実行されません。 ただ、IEはウェブ標準じゃないので、上記はそのままでは使えません。同様のIE独自のattachEventメソッドがあるので、IEにも対応するためには、 function addevent(node, type, func) { if(node.addEventListener) { /* 一般ブラウザ用 */ node.addEventListener(type, func, false); } else { /* IE用 */ node.attachEvent("on"+type, func); } }; addevent(document.body,"load",firstFunc); function firstFunc(){ ....... }

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

window.onloadに書くのも一般的ですね。 (一部メモリリーク問題などちょっと気になりますが・・・) <script> window.onload=firstFunc; function firstFunc(){ var aFunc = document.getElementById('btn'); aFunc.onclick = function(){ alert('りんご'); } } </script> </head> <body> <button id="btn" name="ボタン">getElementByIdでonclickのイベントを追加できる。</button> </body>

関連するQ&A