![]()
JSでラジオボタンがチェックされたらどうする?
Webページでユーザーに複数の選択肢から1つだけを選ばせる際によく使われるのがラジオボタンです。JavaScriptを使って、このラジオボタンがチェックされた時に何か処理を実行したい場合、どのようにすれば良いのでしょうか?
ラジオボタンのチェック状態の判定
JavaScriptで任意のラジオボタンがチェックされているか否かは、ラジオボタンを表す input 要素オブジェクトの checked プロパティで判定します。 checked は、ラジオボタンがチェックされていれば true を返し、チェックされていなければ false を返します。
コード例
<form>
  <label>
    <input type="radio" name="fruit" value="apple"> りんご
  </label>
  <label>
    <input type="radio" name="fruit" value="orange"> みかん
  </label>
  <label>
    <input type="radio" name="fruit" value="banana"> バナナ
  </label>
</form>
<script>
const appleRadio = document.querySelector('input[name="fruit"][value="apple"]');
if (appleRadio.checked) {
  console.log('りんごが選択されています');
} else {
  console.log('りんごは選択されていません');
}
</script>
  上記の例では、まず document.querySelector() を使用して、name 属性が "fruit" で、value 属性が "apple" であるラジオボタン要素を取得しています。そして、取得した要素の checked プロパティを if 文で判定し、結果に応じて処理を分岐しています。
チェックされたラジオボタンの値の取得
チェックされたラジオボタンの値を取得するには、checked プロパティと value プロパティを組み合わせて使用します。
コード例
<form>
  <label>
    <input type="radio" name="color" value="red"> 赤
  </label>
  <label>
    <input type="radio" name="color" value="blue"> 青
  </label>
  <label>
    <input type="radio" name="color" value="green"> 緑
  </label>
</form>
<script>
const radios = document.querySelectorAll('input[name="color"]');
let selectedColor = '';
radios.forEach(radio => {
  if (radio.checked) {
    selectedColor = radio.value;
  }
});
console.log('選択された色:', selectedColor);
</script>
  上記の例では、まず document.querySelectorAll() を使用して、name 属性が "color" であるすべてのラジオボタン要素を取得します。そして、forEach() メソッドで各ラジオボタンを順番に処理し、checked プロパティが true であるラジオボタンの value プロパティを取得して変数 selectedColor に格納しています。
ラジオボタンのイベント処理
ラジオボタンがチェックされたタイミングで何か処理を実行したい場合は、change イベントを使用します。
コード例
<form>
  <label>
    <input type="radio" name="size" value="small"> 小
  </label>
  <label>
    <input type="radio" name="size" value="medium"> 中
  </label>
  <label>
    <input type="radio" name="size" value="large"> 大
  </label>
</form>
<script>
const sizeRadios = document.querySelectorAll('input[name="size"]');
sizeRadios.forEach(radio => {
  radio.addEventListener('change', () => {
    const selectedSize = document.querySelector('input[name="size"]:checked').value;
    console.log('選択されたサイズ:', selectedSize);
  });
});
</script>
  上記の例では、各ラジオボタンに change イベントリスナーを設定し、イベント発生時にチェックされたラジオボタンの値を取得してコンソールに出力しています。
まとめ
JavaScriptでラジオボタンを操作する方法について解説しました。 checked プロパティとイベント処理を組み合わせることで、Webページにインタラクティブな機能を追加することができます。
| プロパティ/メソッド | 説明 | 
|---|---|
checked | 
        ラジオボタンがチェックされているかどうかを判定する | 
value | 
        ラジオボタンの値を取得する | 
addEventListener('change', ...) | 
        ラジオボタンの値が変更されたときにイベントリスナーを設定する | 
参考資料
- HTML input type="radio" - HTML: HyperText Markup Language | MDN
 - HTMLElement: change イベント - Web API | MDN
 
関連QA
Q1: ラジオボタンの初期状態を設定するにはどうすれば良いですか?
A1: HTMLの checked 属性を使用します。<input type="radio" name="example" value="value1" checked> のように記述することで、ページ読み込み時に該当のラジオボタンが選択された状態になります。
Q2: チェックされているラジオボタンをJavaScriptで変更するにはどうすれば良いですか?
A2: ラジオボタン要素の checked プロパティに true を設定することで、該当のラジオボタンをチェック状態にできます。 document.querySelector('input[name="example"][value="value2"]').checked = true; のように記述します。
Q3: ラジオボタンのスタイルをCSSで変更するにはどうすれば良いですか?
A3: ラジオボタン自体はスタイル変更が難しいですが、隣接するラベル要素をターゲットにすることで見た目を変更できます。例えば、input[type="radio"]:checked + label { color: red; } のように記述することで、チェックされたラジオボタンのラベルの文字色を赤に変更できます。
その他の参考記事:jquery checkbox 外す