![]()
JavaScriptで全てのフォーム要素を取得する方法
Webページ上でユーザーと対話するための重要な要素の一つに、フォームがあります。フォームはユーザーからのデータ入力を受け取り、サーバーに送信するための仕組みを提供します。JavaScriptを使用すると、このフォーム要素にアクセスし、操作することができます。この記事では、JavaScriptを用いて全てのフォーム要素を取得する方法について解説します。
document.formsプロパティ
JavaScriptでフォーム要素を取得するには、document.formsプロパティを使用します。このプロパティは、HTMLドキュメント内の全てのフォーム要素を含むHTMLCollectionを返します。
<form name="form1">
  <!-- フォーム要素 -->
</form>
<form name="form2">
  <!-- フォーム要素 -->
</form>
<script>
  const forms = document.forms;
  console.log(forms); // フォーム要素のコレクション
</script>
上記コードでは、document.formsは2つのフォーム要素を含むHTMLCollectionを返します。HTMLCollectionは配列のようなオブジェクトであり、インデックス番号またはname属性値を使って個々のフォーム要素にアクセスできます。
| アクセス方法 | コード例 | 説明 | 
|---|---|---|
| インデックス番号 | forms[0] | 
      最初のフォーム要素にアクセス | 
| name属性値 | forms["form1"] | 
      name属性値が"form1"のフォーム要素にアクセス | 
フォーム要素内の要素へのアクセス
フォーム要素を取得したら、その中に含まれる個々の入力フィールドやボタンなどの要素にもアクセスできます。フォーム要素は、その中に含まれる要素をプロパティとして保持しています。例えば、以下のように入力フィールドの値を取得できます。
<form name="myForm">
  <input type="text" name="username">
</form>
<script>
  const form = document.forms["myForm"];
  const usernameInput = form.username;
  console.log(usernameInput.value); // 入力フィールドの値
</script>
まとめ
この記事では、JavaScriptで全てのフォーム要素を取得する方法と、フォーム要素内の個々の要素にアクセスする方法について解説しました。document.formsプロパティとフォーム要素のプロパティを組み合わせることで、フォームを操作し、ユーザーエクスペリエンスを向上させることができます。
参考資料
関連QA
- 
    
Q: 複数のフォームがある場合、特定のフォームだけを取得するにはどうすれば良いですか?
A:
document.formsはHTMLCollectionを返すため、インデックス番号やname属性値を使って特定のフォームにアクセスできます。例えば、2番目のフォームを取得する場合はdocument.forms[1]を、name属性値が "myForm" のフォームを取得する場合はdocument.forms["myForm"]を使用します。 - 
    
Q: フォーム内の要素を全て取得するにはどうすれば良いですか?
A: フォーム要素は、その中に含まれる要素をプロパティとして保持しています。そのため、個別にアクセスする以外にも、
form.elementsプロパティを使うことで、フォーム内の全ての要素を含む HTMLCollection を取得できます。 - 
    
Q: フォームの送信をJavaScriptで制御することはできますか?
A: はい、可能です。フォーム要素の
submitイベントをリスニングし、イベントハンドラ内でevent.preventDefault()を実行することで、デフォルトの送信動作をキャンセルできます。これにより、JavaScriptでフォームのバリデーションなどを行った後に、条件に応じて送信処理を実行できます。 
その他の参考記事:JavaScriptフォーム