テーブルのヘッダーにあるチェックボックスをクリックしたら、その他全てのチェックボックスも連動してチェックするようにしたい!
こんなお悩みをお持ちではありませんか?


・チェックボックスを一括操作できるようにしたい
・チェックした箇所のデータを簡単に取得したい



この記事は、JavaScriptを使用して
「チェックボックスを一括操作」する方法を紹介します。
チェックボックスの一括操作を実装することで、大量データを効率的に操作でき、データ管理が楽になります。
さらに、チェックされたデータをまとめて取得し、次の処理に活用することも可能です。
この記事では、チェックボックスを連動して操作する仕組みや、選択されたデータをJavaScriptで一括取得する方法を丁寧に解説します。
初心者の方でも安心して実装できるよう、具体的なコード例とその解説を詳しく掲載していますので、ぜひ最後までお読みください!
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
JavaScriptをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのJavaScript講座がおすすめです。
特に、動画学習の強みは「自分のペースで学べる」ことです。
わからない部分を何度でも繰り返し確認できるため、実際に手を動かしながら理解を深めることができます。これにより、JavaScriptを効率よく学び、実務や趣味のプロジェクトでスキルを活用できるようになります!
もし、「動画を使って効率的に学びたい」と思ったら、ぜひ一度Udemyをチェックしてみてください。


\ 動画で効率的に学べる!初心者におすすめのJavaScript講座 /
この記事を読むことで「できるようになる」こと
- そもそもチェックボックスを一括で操作出来たら何が便利か?確認する
- JavaScriptでチェックボックスを一括操作するコードを確認する
- チェックボックスを操作する際の注意ポイントを把握する
- JavaScriptでチェックボックスを一括操作したらどんなことができるか?実例をご紹介
そもそもチェックボックスを一括操作できると何が便利になる?
まず、この機能がどんな場面で役立つのかを簡単に説明します。
- データ管理が効率化
例えば、テーブル形式で管理しているデータを一括選択する機能があれば、個別にクリックする手間が省けます。
選択解除も同様に簡単にできるため、操作性が大幅に向上します。 - 時間短縮
チェックボックスの数が多い場合、一括操作は作業時間を大幅に短縮できます。
特に業務やシステム開発で、100件以上のデータを扱う際には必須の機能です。 - ユーザーエクスペリエンスの向上
チェックボックスが連動していることで、操作が直感的になり、ユーザーにとって親切なインターフェースを提供できます。
では、次に具体的な実装方法を見ていきましょう!
JavaScriptでチェックボックスを一括連動する仕組みを解説 | HTML・CSSも解説
今回ご紹介する機能の動作概要は以下の通りです。
- ヘッダーのチェックボックスをクリック
- ヘッダーにあるチェックボックスをクリックすると、テーブル内のすべての行のチェックボックスが連動してチェックされます。
- 個別のチェックボックスも操作可能
- 各行のチェックボックスは、ヘッダーと連動しつつ、個別操作も可能です。
See the Pen Untitled by Sean (@Sean-Sean-Sean) on CodePen.
チェックボックスの基本的な仕様についてもっと知りたい方は、MDN Web Docsの <input type=”checkbox”> をご覧ください。
それでは、この機能を実装するための具体的なコードについて、次のセクションで詳しく解説していきます。
解説1. HTMLでチェックボックスを配置する
まず、チェックボックスのHTML構造を作成します。
以下のコードは、テーブルのヘッダーにチェックボックスを配置し、各行にもチェックボックスを設置した例です。
<table>
<thead>
<tr>
<th><input type="checkbox" id="headerCheckbox"></th>
<th>ヘッダー1</th>
<th>ヘッダー2</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" class="rowCheckbox"></td>
<td>データ1</td>
<td>データ2</td>
</tr>
<tr>
<td><input type="checkbox" class="rowCheckbox"></td>
<td>データ3</td>
<td>データ4</td>
</tr>
</tbody>
</table>
- id=”headerCheckbox”
- ヘッダーのチェックボックスを特定するためのID。
これを基準にイベントを設定します。
- ヘッダーのチェックボックスを特定するためのID。
- class=”rowCheckbox”
- 各行のチェックボックスをグループ化するためのクラス名です。
これにより、全ての行をまとめて操作することが可能になります。
- 各行のチェックボックスをグループ化するためのクラス名です。
解説2. JavaScriptでヘッダーのチェックボックスと各行を連動させる
以下のJavaScriptコードを使うことで、ヘッダーのチェックボックスを操作した際に、各行のチェックボックスが一括で連動するようになります。
実際のコード
// ヘッダーのチェックボックスを取得
const headerCheckbox = document.getElementById('headerCheckbox');
// 全ての行のチェックボックスを操作する関数
function toggleAllRowCheckboxes(checked) {
const rowCheckboxes = document.querySelectorAll('.rowCheckbox');
rowCheckboxes.forEach(cb => cb.checked = checked);
}
// ヘッダーのチェックボックスにイベントを追加
headerCheckbox.addEventListener('change', () => {
toggleAllRowCheckboxes(headerCheckbox.checked);
});
- getElementById
- ヘッダーのチェックボックス(
id="headerCheckbox"
)を取得します。
この要素を基準にイベントを設定します。
- ヘッダーのチェックボックス(
- querySelectorAll
- テーブル内のすべての行のチェックボックス(
class="rowCheckbox"
)を取得します。
このリストを使って一括操作を行います。
- テーブル内のすべての行のチェックボックス(
- addEventListener
- ヘッダーのチェックボックスに「状態が変化したときに処理を実行する」イベントを追加します。
- checked
- チェックボックスの「選択状態」を取得または変更するためのプロパティです。
true
ならチェック済み、false
なら未チェックとなります。
- チェックボックスの「選択状態」を取得または変更するためのプロパティです。
「クリック」で、1行ずつコードの解説を見る
- const headerCheckbox = document.getElementById(‘headerCheckbox’);
- このコードは、HTMLの中にある「ヘッダーのチェックボックス」を取得しています。
具体的には、HTML内でid="headerCheckbox"
が付けられている要素を取得しています。
- このコードは、HTMLの中にある「ヘッダーのチェックボックス」を取得しています。
- function toggleAllRowCheckboxes(checked) {
- ここでは、「
toggleAllRowCheckboxes
」という関数を定義しています。
この関数には1つの引数(checked
)があります。
引数checked
には、「ヘッダーのチェックボックスがチェックされているかどうか」の状態(true
またはfalse
)が渡されます。 - この関数を使うことで、テーブル内のすべてのチェックボックスを一括で「チェックする」または「チェックを外す」という操作が簡単に行えます。
- ここでは、「
- const rowCheckboxes = document.querySelectorAll(‘.rowCheckbox’);
- この行では、HTML内にあるすべての行のチェックボックス(クラス名が
rowCheckbox
の要素)を取得しています。 - ヘッダーのチェックボックスがクリックされたときに、どのチェックボックスを操作するかを特定するために必要です。
- この行では、HTML内にあるすべての行のチェックボックス(クラス名が
- rowCheckboxes.forEach(cb => cb.checked = checked);
- ここでは、
rowCheckboxes
に格納されたすべてのチェックボックスについて、「ヘッダーのチェックボックスの状態(checked
)」をコピーする処理を行っています。checked
がtrue
の場合、すべてのチェックボックスがチェック状態になります。checked
がfalse
の場合、すべてのチェックボックスのチェックが外れます。
forEach
は、rowCheckboxes
に含まれるチェックボックス1つ1つに対して処理を実行します。cb
は、rowCheckboxes
の中の各チェックボックスを指します(1つずつ順番に処理されます)。cb.checked = checked
は、「現在のチェックボックス(cb
)の状態を、引数checked
の値(true
またはfalse
)に設定する」ことを意味します。
- ここでは、
- headerCheckbox.addEventListener(‘change’, () => {
- この行では、「ヘッダーのチェックボックスが操作されたときに実行する処理」を設定しています。
具体的には、ヘッダーのチェックボックスの状態が変わった(change
イベントが発生した)ときに、後に書かれた処理を実行します。 - たとえば、ヘッダーのチェックボックスをクリックして「チェックを入れる」または「チェックを外す」操作をしたときに、このイベントリスナーが動作します。
- この行では、「ヘッダーのチェックボックスが操作されたときに実行する処理」を設定しています。
- toggleAllRowCheckboxes(headerCheckbox.checked);
- ここでは、先ほど定義した
toggleAllRowCheckboxes
関数を実行しています。
引数としてheaderCheckbox.checked
を渡しています。 headerCheckbox.checked
は、ヘッダーのチェックボックスがチェックされている場合にtrue
、されていない場合にfalse
となります。
- ここでは、先ほど定義した
- });
- イベントリスナーの処理を終了しています。
この括弧によって、1つのまとまった処理として完結しています。
- イベントリスナーの処理を終了しています。
解説補足. CSSでテーブルの装飾を行う
ここでは最低限のCSSを追加し、チェックボックスのスタイルやテーブルの見た目を簡単に整えるコードを設定しています。
table {
border-collapse: collapse;
/* テーブルセルの枠線を結合して1本にする */
}
th {
background-color: #f8f7f6;
/* テーブルヘッダーの背景色を薄いグレーに設定 */
}
th, td {
border-bottom: solid 1px black;
/* セルの下線を黒色で実線に設定 */
padding: 15px;
/* セル内の文字や内容に余白を設定(上下左右15pxずつ) */
}
input[type="checkbox"] {
transform: scale(1.5);
/* チェックボックスのサイズを1.5倍に拡大 */
vertical-align: middle;
/* チェックボックスを縦方向で中央揃えにする */
}
- table
- テーブル全体のデザインを整えるために使用します。
- セル同士の境界線を結合(
border-collapse
)することで、セルの間に隙間を作らずスッキリとした見た目にできます。
- セル同士の境界線を結合(
- テーブル全体のデザインを整えるために使用します。
- th, td
- テーブルのヘッダーとデータセルの見た目を統一します。
padding
を設定することで、文字や内容にスペースを確保し、見た目を整えます。
- テーブルのヘッダーとデータセルの見た目を統一します。
- input[type=”checkbox”]
- チェックボックスのスタイルを調整します。
transform: scale(1.5)
を使用してサイズを拡大し、見やすく操作しやすい形にします。vertical-align: middle
を指定することで、チェックボックスをセルやテキストの中央に揃えます。
- チェックボックスのスタイルを調整します。
このコードを使用する際の注意ポイント
- IDとクラスの設定ミスに注意!
IDは1つしか存在できませんが、クラスは複数の要素に適用されます。
ヘッダーにはID、各行にはクラスを使うことで適切に区別します。 - JavaScriptが動作することを確認
JavaScriptファイル(app.js
など)を正しくHTMLに読み込ませる必要があります。
以下のように記載しましょう。
⇒<script src="app.js"></script>
- ブラウザ互換性
ほとんどのモダンブラウザで動作しますが、古いブラウザでは動作しない場合があります。
その際はpolyfill(互換性を補うコード)の導入を検討してください。
使用例 : チェックボックスで選択された行のデータを取得
一括でチェックボックスを操作するコードを使用すると、次のような動作を効率よく活用することも可能です。
このコードでは、チェックボックスが選択された行のデータを取得し、ボタンを押すことで、それをアラートで表示します。
複数のデータから特定の行を選択し、その情報を次の処理に活用する場面で大変便利です。
See the Pen Untitled by Sean (@Sean-Sean-Sean) on CodePen.
JavaScriptをしっかり学びたいけれど、「どこから始めればいいかわからない」と迷っていませんか?
そんな方には、UdemyのJavaScript講座がおすすめです。
特に、動画学習の強みは「自分のペースで学べる」ことです。
わからない部分を何度でも繰り返し確認できるため、実際に手を動かしながら理解を深めることができます。これにより、JavaScriptを効率よく学び、実務や趣味のプロジェクトでスキルを活用できるようになります!
もし、「動画を使って効率的に学びたい」と思ったら、ぜひ一度Udemyをチェックしてみてください。


\ 動画で効率的に学べる!初心者におすすめのJavaScript講座 /
コード例 | チェックボックス選択行のデータ取得
コード例 | HTML
クリックしてHTMLのコードを見る
<table>
<thead>
<tr>
<th><input type="checkbox" id="headerCheckbox"></th>
<th>ヘッダー1</th>
<th>ヘッダー2</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" class="rowCheckbox"></td>
<td>データ1-1</td>
<td>データ2-1</td>
</tr>
<tr>
<td><input type="checkbox" class="rowCheckbox"></td>
<td>データ1-2</td>
<td>データ2-2</td>
</tr>
<tr>
<td><input type="checkbox" class="rowCheckbox"></td>
<td>データ1-3</td>
<td>データ2-3</td>
</tr>
</tbody>
</table>
<button id="getDataButton">選択データを取得</button>
コード例 | JavaScript
クリックしてJavaScriptのコードを見る
// ヘッダーのチェックボックスを取得
const headerCheckbox = document.getElementById('headerCheckbox');
// 行のチェックボックスを取得
const rowCheckboxes = document.querySelectorAll('.rowCheckbox');
// ヘッダーのチェックボックスが変更されたときのイベントリスナー
headerCheckbox.addEventListener('change', () => {
// ヘッダーのチェックボックスの状態を取得
const isChecked = headerCheckbox.checked;
// すべての行のチェックボックスをヘッダーの状態に合わせる
rowCheckboxes.forEach(checkbox => {
checkbox.checked = isChecked;
});
});
// ボタンにクリックイベントを追加
document.getElementById('getDataButton').addEventListener('click', () => {
// テーブル内のすべての行を取得
const selectedRows = document.querySelectorAll('tr');
let selectedData = []; // 選択された行のデータを格納する配列
// 各行をループ処理
selectedRows.forEach(row => {
// 行内のチェックボックスを取得
const checkbox = row.querySelector('.rowCheckbox');
if (checkbox && checkbox.checked) {
// チェックされた行のデータを取得し、配列に追加
const rowData = Array.from(row.querySelectorAll('td'))
.map(td => td.textContent.trim()) // 各セルの内容を取得
.filter(text => text !== ""); // 空要素を除去
selectedData.push(rowData.join(', '));
}
});
// 選択されたデータをアラートで表示
if (selectedData.length > 0) {
alert("選択されたデータ:\n" + selectedData.join('\n')); // 各行データを改行区切りで表示
} else {
alert("選択されたデータはありません。");
}
});
コード例 | CSS
クリックしてCSSのコードを見る
table {
border-collapse: collapse; /* テーブルセルの枠線を結合して1本にする */
margin: 20px 0; /* 上下にスペースを追加 */
}
th {
background-color: #f8f7f6; /* ヘッダーの背景色を薄いグレーに設定 */
}
th, td {
border-bottom: solid 1px black; /* セルの下線を黒色で実線に設定 */
padding: 15px; /* セル内の文字や内容に余白を設定(上下左右15pxずつ) */
text-align: center; /* セル内の文字を中央揃えに設定 */
}
input[type="checkbox"] {
transform: scale(1.5); /* チェックボックスを1.5倍に拡大 */
vertical-align: middle; /* 縦方向で中央揃えにする */
}
button {
margin-top: 20px; /* ボタンとテーブルの間に余白を設定 */
padding: 10px 20px; /* ボタン内の余白を設定 */
font-size: 16px; /* ボタンの文字サイズを大きくする */
background-color: #007bff; /* ボタンの背景色を青に設定 */
color: white; /* ボタンの文字色を白に設定 */
border: none; /* ボタンの枠線を非表示にする */
border-radius: 5px; /* ボタンの角を丸くする */
cursor: pointer; /* ボタンのカーソルをポインターに変更 */
}
button:hover {
background-color: #0056b3; /* ボタンをホバーした際に濃い青にする */
}
コードの動作概要
ヘッダーのチェックボックスを操作すると、すべての行のチェックボックスが連動してオン/オフされます。
ボタンをクリックすると、チェックされた行のデータを取得し、アラートで表示します。
このコードで使用している機能
機能名 | 説明 |
---|---|
querySelectorAll | 指定したセレクタに一致するすべての要素を取得します。 |
addEventListener | ヘッダーやボタンのクリック時にイベント処理を追加します。 |
Array.from | 行内のセルデータを配列として取得し、操作できるようにします。 |
map | セルデータをループ処理し、テキストデータを整形します。 |
filter | 空白のセルデータを除外するために使用します。 |
alert | 選択されたデータをアラートで表示します。 |
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- const headerCheckbox = document.getElementById(‘headerCheckbox’);
- HTML内で
id="headerCheckbox"
を持つ要素を取得します。
これはテーブルのヘッダーにあるチェックボックスです。
- HTML内で
- const rowCheckboxes = document.querySelectorAll(‘.rowCheckbox’);
class="rowCheckbox"
を持つすべてのチェックボックス要素を取得します。querySelectorAll
を使うことで複数の要素をまとめて取得できます。
これはテーブル内の各行にあるチェックボックスを指します。
- headerCheckbox.addEventListener(‘change’, () => {
- ヘッダーのチェックボックスに「変更イベント(
change
)」を設定します。 - このイベントは、チェックボックスの状態がオン(チェックされる)またはオフ(チェックが外れる)に切り替わったときに実行されます。
- ヘッダーのチェックボックスに「変更イベント(
- const isChecked = headerCheckbox.checked;
- ヘッダーのチェックボックスが現在チェックされているか(
true
)どうかを取得します。
チェックされていればtrue
、チェックが外されていればfalse
が返されます。
- ヘッダーのチェックボックスが現在チェックされているか(
- rowCheckboxes.forEach(checkbox => {
checkbox.checked = isChecked;
});forEach
を使って、rowCheckboxes
に含まれる各チェックボックスを1つずつ操作します。- 各行のチェックボックスの状態(
checked
プロパティ)を、ヘッダーのチェックボックスの状態(isChecked
)に設定します。
これにより、ヘッダーのチェックボックスに連動して、すべての行が一括でオン/オフされます。
- document.getElementById(‘getDataButton’).addEventListener(‘click’, () => {
- HTML内で
id="getDataButton"
を持つボタン要素を取得し、クリックイベントを設定します。
このイベントは、ボタンがクリックされたときに実行されます。
- HTML内で
- const selectedRows = document.querySelectorAll(‘tr’);
- テーブル内にあるすべての行(
tr
要素)を取得します。
このリストに対して後でループ処理を行い、選択された行のデータを取得します。
- テーブル内にあるすべての行(
- let selectedData = [];
- 選択された行のデータを保存するための空の配列を作成します。
この配列に選択されたデータを順次追加していきます。
- 選択された行のデータを保存するための空の配列を作成します。
- selectedRows.forEach(row => {
- テーブル内のすべての行に対してループ処理を実行します。
row
は、現在処理している行を指します。
- const checkbox = row.querySelector(‘.rowCheckbox’);
- 現在の行(
row
)内にあるチェックボックスを取得します。 querySelector
を使用して、class="rowCheckbox"
を持つチェックボックスを探します。
- 現在の行(
- if (checkbox && checkbox.checked) {
- チェックボックスが存在し、かつチェックされている場合にのみ以下の処理を実行します。
- 条件式が
true
の場合、選択されたデータを取得します。
- const rowData = Array.from(row.querySelectorAll(‘td’))
- 現在の行(
row
)内にあるすべてのセル(td
要素)を取得します。 Array.from
を使うことで、NodeListを配列に変換しています。
- 現在の行(
- .map(td => td.textContent.trim())
- 各セル(
td
)のテキスト内容(textContent
)を取得し、余分な空白を削除します。 trim()
は、文字列の前後にある不要な空白を取り除くために使用します。
- 各セル(
- .filter(text => text !== “”);
- 空のデータ(空文字列)を除外します。
この処理により、不要な空白セルが結果に含まれなくなります。
- 空のデータ(空文字列)を除外します。
- selectedData.push(rowData.join(‘, ‘));
- 整形したデータをカンマ(
,
)区切りで結合し、selectedData
配列に追加します。
これにより、1行ごとのデータが1つの文字列として保存されます。
- 整形したデータをカンマ(
- if (selectedData.length > 0) {
selectedData
配列にデータが1件以上存在するかを確認します。
配列の長さ(length
)が0より大きい場合、以下の処理を実行します。
- alert(“選択されたデータ:\n” + selectedData.join(‘\n’));
- 選択されたデータを改行(
\n
)区切りでアラート表示します。
- 選択されたデータを改行(
- } else {
alert(“選択されたデータはありません。”);
}selectedData
配列が空の場合、アラートで「選択されたデータはありません。」と表示します。
総括・ポイント
このコードは、チェックボックスを使ってテーブル内の特定の行を選択し、そのデータを取得する実用的な例です。
- 選択されたデータの取得
- チェックされた行のデータを収集し、次の処理に利用できるようにします。
- コードの柔軟性
- テーブルのデータが増減しても、動的に対応可能です。
- 初心者にもわかりやすい設計
- JavaScriptの基本的な操作(
querySelectorAll
、forEach
など)を活用し、簡潔に構成されています。
- JavaScriptの基本的な操作(
この記事のまとめ
この記事では、JavaScriptでチェックボックスを一括操作する方法を初心者向けに解説しました。
チェックボックスをヘッダーから一括操作する機能を実装することで、大量データを効率よく管理したり、選択された行のデータを簡単に取得して次の処理に活用することが可能になります。
さらに、HTML・CSS・JavaScriptを組み合わせて、動作するテーブルを構築する手順も紹介しました。
ポイントのおさらい
- チェックボックスを一括操作する仕組みを学ぶ
- JavaScriptの基本的な機能である
querySelectorAll
やaddEventListener
を使用して、ヘッダーのチェックボックス操作で全行を連動させる仕組みを実装しました。
⇒ 「JavaScriptでチェックボックスを一括連動する仕組みを解説 | HTML・CSSも解説」をもう一度見る
- JavaScriptの基本的な機能である
- 選択された行のデータを取得する実例を確認
- ボタンをクリックして、選択された行のデータを収集し、アラートで表示する実用的なコード例を紹介しました。
この方法を応用すれば、業務システムや管理ツールで効率化を図れます。
⇒ 「使用例 : チェックボックスで選択された行のデータを取得」をもう一度見る
- ボタンをクリックして、選択された行のデータを収集し、アラートで表示する実用的なコード例を紹介しました。
- テーブルの装飾や使いやすさをCSSで向上
- CSSを活用して、テーブルやチェックボックス、ボタンのデザインを整えました。
特に、チェックボックスのサイズ拡大やホバー時の色変更など、見た目の改善に注力しました。
⇒ 「使用例 : チェックボックスで選択された行のデータを取得のCSSコード例」をもう一度見る
- CSSを活用して、テーブルやチェックボックス、ボタンのデザインを整えました。
今回の学びを活用するために
この記事で紹介した方法は、チェックボックスを使ったデータ管理や、選択データの取得を効率化する上で非常に実用的です。
特に以下のような場面で役立ちます。
- 業務アプリケーションや管理ツール
- 大量のデータを一括操作し、選択した項目だけを処理するシステムの構築が可能です。
- ユーザビリティの向上
- 一括操作と個別操作の両立により、直感的で使いやすいUIを実現できます。
- 学習やスキルアップ
- JavaScriptやHTML、CSSの基本的な操作を実際のコード例で学ぶことができ、Web開発スキルの向上につながります。

