2009年7月2日木曜日

getElementById使用時のobject required エラー

HTMLの方でちゃんとsIDというフィールドを作ったのに、

  <input type="hidden" id="sID" name="sID" />

このgetElementByIdがIEでエラーになるのはどうしてでしょうか。

  <script type="text/javascript">
  document.getElementById("sID").value = User;

原因を見つけるのに数時間かかりましたが、このポストを見つけた人はもっと早く解決できるかも。

答えはHTMLのロードとJavascriptの実行のタイミングにありました。問題のgetElementById("sID") が呼び出される時にsIDというフィールドがロードされていなければエラーになるというわけです。ということはHTMLのロードを待ってからJavascriptを実行するようにすればいいわけです。例えば、

  <script type="text/javascript">
  function init() {
    //関数に入れる
     document.getElementById("sID").value = User;
  }
  .
  .
  .
  <body onLoad="init()"> <!-- HTMLのロードを待って呼び出す-->
     <input type="hidden" id="sID" name="sID" />

0 件のコメント: