【javascript】tableの行クリックで背景色を変更する方法
【javascript】tableの行クリックで背景色を変更する方法
実現したいこと
以下のようなHTMLのtableにて行をクリックされた場合に、その行の背景色を変更します。
以下は画像ですが、後述の動作確認で実際の動きを確認できますよ。

今回使用した環境
インターネット接続可能のオンラインの環境
64 ビット オペレーティング システム
Windows 10 22H2
Chrome 134.0.6998.118
ソースコード
以下、HTMLのtableとjavascriptです。tableのヘッダ (th) の背景色はクリックされても変わらないようにするため、33行目のif文で背景色の変更対象をtdだけとしています。
34行目の繰り返し処理でいったん行の背景色を全て白色に変更し、37行目でクリックされた行の背景色を変更しています。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>サイトタイトル</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<h1>tableの行をクリックして背景色を変更する</h1>
<table class="list-basic" id="tbl01">
<tbody>
<tr>
<th>名前</th>
<th>年齢</th>
<th>住所</th>
</tr>
<tr>
<td>田中</td>
<td>27</td>
<td>東京都</td>
</tr>
<tr>
<td>佐藤</td>
<td>42</td>
<td>埼玉県</td>
</tr>
</tbody>
</table>
<script type="text/javascript">
var table = document.querySelector('#tbl01');
var tr = table.querySelectorAll("tr");
table.addEventListener("click", function(e) {
if(e.target.tagName.toLowerCase() === "td") {
tr.forEach(element => {
element.className = "unselect-row";
});
e.target.parentNode.className = "select-row";
}
});
</script>
</body>
</html>
以下、cssです。
.list-basic {
border-collapse: collapse;
}
.list-basic th {
padding: 10px;
border: solid 1px #808080;
background-color: #003366;
color: #ffffff;
}
.list-basic td {
padding: 10px;
border: solid 1px #808080;
}
.select-row {
background-color: #ffe4c4;
}
.unselect-row {
background-color: #ffffff;
}
動作確認
動作確認です。こちらはクリックすることで実際の動きを試してみることができます。
tableの行をクリックして背景色を変更する
名前 | 年齢 | 住所 |
---|---|---|
田中 | 27 | 東京都 |
佐藤 | 42 | 埼玉県 |
想定通りの動きが確認できました。
以上となります。
ここまでお読みいただきありがとうございました。