Shammer's Philosophy

My private adversaria

テキストボックスの追加

Webページを開いて何か入力する際に、入力項目を追加したり削除したりするボタンが欲しいときがある。それを実現する JavaScript を書いてみた。今回はテキストボックスの追加のみだが。

    <form name="testForm" action="http://www.me.local/post" method="POST">
      <table border="1">
	<tbody id="id1">
	  <tr><th>Field0</th><td><input type="text" name="field0"></input></td></tr>
	</tbody>
      </table>
    </form>
    <script type="text/javascript">
      var text_box_index = 1;
      function add() {
        var element=document.createElement("tr");
        element.innerHTML="<th>Field" + text_box_index + "</th><td><input type='text' name='box" + text_box_index + "'></input></td>";
        var parent = document.getElementById("id1");
        parent.appendChild(element);
        parent.appendChild(document.createTextNode("\n	  "));
        window.alert(document.getElementById("id1").innerHTML);
        text_box_index = text_box_index + 1;
      }
    </script>
    <button onclick="add();">Test</button>

いくつかポイントがある。

  • document.createElement("xxx") で追加対象となる要素を作成。この例では Table の tr を追加していくようにしてみた。
  • 要素の innerHTML 値がその要素の html となる。
  • 追加先は document.getElementById("id") で取得する。
  • 追加先に appendChild をすることで要素を追加できる。
  • 追加先に文字列をそのまま追加したい場合は document.createTextNode("xxx") を appendChild の引数にする

また今度、削除もやってみたいと思う。