niwacchi.log

niwacchiのログ。

IEとFirefoxでのinnerHTMLの動作の違い(配列)

 innerHTMLを使用してレイヤのHTMLを設定した後にダイアログを表示する。IEでは「1」と出るが、Firefoxでは「2」。これが常識なのかどうかは知らないけど、今日知ったので書いとく。
 表示としては上から順番になるので、配列として扱った場合は、innerHTMLで設定した部分が配列に先頭になるのかと考えてた。事実、IEではそのように動く。一方、Firefoxでは、恐らく「後から設定されたものが後にくる」ということみたい。なんか言い方が変だけど。

<html>
<head>
  <title>Test Page</title>
  <script type="text/javascript">
  <!--
    function test()
    {
      document.getElementById("target").innerHTML = "<input type='text' name='v_txt' value='1'>";
      alert(document.frm.v_txt[0].value);
    }
  //-->
  </script>
</head>
<body>
  <form name="frm">
    <div id="target">
    <input type="text" name="v_txt" value=""><br/>
    </div>
    <input type="text" name="v_txt" value="2"><br/>
    <input type="button" name="btn" value="test" onclick="test();"><br/>
  </form>
</body>
</html>

しかしなんだこの検証。気持ち悪い。