ラジオボタンは、複数の選択肢から1つだけを選ばせるフォーム部品です。JavaScriptで選択された値を取得して表示する方法を解説します。
取得方法は :checked セレクタや form.elements など複数あり、選択した瞬間に取得するなら change イベントが便利です。実際に動くデモで確認しながら見ていきましょう。
document.querySelector('input[name="グループ名"]:checked')?.value、またはフォームから form.elements.グループ名.value で取得できます。選択と同時に取りたいときは change イベントを使います。完成イメージ(動くデモ)
↓ 選んだ瞬間に値が表示されます:
HTML
同じ name を付けた <input type="radio"> が1つのグループになります。各ボタンの value が選択時に取得できる値です。
<form id="myForm"> <label><input type="radio" name="options" value="Option 1"> Option 1</label> <label><input type="radio" name="options" value="Option 2"> Option 2</label> <label><input type="radio" name="options" value="Option 3"> Option 3</label> <button type="button" id="submit">表示</button> </form> <p id="result"></p>
選択された値を取得する(:checked)
選択中のラジオボタンは、CSSの :checked 疑似クラスで取得できます。グループ内でチェックされている1つの要素が返るので、その value を読みます。
const button = document.getElementById("submit");
const result = document.getElementById("result");
button.addEventListener("click", () => {
const selected = document.querySelector('input[name="options"]:checked');
result.textContent = selected
? `選択:${selected.value}`
: "選択されていません"; // 未選択なら null
});
未選択のときは null が返るため、document.querySelector('...:checked')?.value のようにオプショナルチェーン ?.を使うと安全です(未選択なら undefined)。セレクタの詳細はquerySelectorの使い方を参照してください。
もっと簡単に:form.elementsで取得
フォーム要素からは、form.elements.グループ名.value でチェック中の値を直接取得できます。:checked を書く必要がなく簡潔です。
const form = document.getElementById("myForm");
// チェック中のラジオの value を直接取得(未選択なら空文字 "")
const value = form.elements.options.value;
// または form.elements["options"].value
console.log(value); // "Option 2" など
同じ name のラジオは form.elements.options でグループ(RadioNodeList)として扱われ、その .value が選択値になります。未選択のときは空文字 "" です。
選択と同時に取得する(changeイベント)
ボタンを押させず、ラジオを選んだ瞬間に値を取得・表示したいときは change イベントを使います。フォームに張ると、どのラジオの変更も拾えます。
const form = document.getElementById("myForm");
const result = document.getElementById("result");
form.addEventListener("change", () => {
result.textContent = `選択:${form.elements.options.value}`;
});
フォーム入力の監視全般はフォーム入力をリアルタイムで監視する方法、チェックボックスの状態取得はチェックボックスのチェック状態を判定する方法も参考になります。
選択を変更・リセットする
JavaScriptから特定のラジオを選択状態にしたり、グループの選択を解除したりもできます。
// 特定の値を選択状態にする
document.querySelector('input[name="options"][value="Option 2"]').checked = true;
// グループの選択をすべて解除する
document.querySelectorAll('input[name="options"]').forEach((el) => {
el.checked = false;
});
// フォーム全体を初期状態に戻すなら
document.getElementById("myForm").reset();
複数要素をまとめて操作する方法はquerySelectorAllで取得した複数要素を操作する方法にまとめています。なお checked をスクリプトで変えても change イベントは自動発火しないため、必要なら dispatchEvent(new Event("change")) を呼びます。
よくある質問(FAQ)
document.querySelector('input[name="グループ名"]:checked')?.value で取得できます。チェックが無い場合は undefined になるため ?. 演算子が安全です。フォームからは form.elements.グループ名.value でも直接取れます。value を持つ要素の checked を true にします。例:document.querySelector('[name=group][value=opt2]').checked = true。change イベントは手動では発火しないため、必要なら dispatchEvent してください。querySelectorAll('input[name=group]') でグループ全体を取得し、forEach(el => el.checked = false) で全チェックを外します。フォーム全体なら form.reset() でも初期状態に戻せます。change イベントを使います。フォームに addEventListener("change", ...) を張り、form.elements.グループ名.value を読めば、ボタンを押さなくても選択値を取得できます。まとめ
ラジオボタンの値は、querySelector('[name]:checked')?.value か、より簡潔な form.elements.グループ名.value で取得できます。未選択時はそれぞれ undefined / 空文字 "" になります。
ボタンを押させず選んだ瞬間に取得したいなら change イベントが便利です。スクリプトから選択を変更・リセットすることもできます。用途に合わせて使い分けて、使いやすいフォームを作りましょう。

