回答編集履歴

1

クリック検知のサンプル

2023/02/17 05:21

投稿

int32_t
int32_t

スコア21929

test CHANGED
@@ -4,3 +4,44 @@
4
4
 
5
5
  すべてのid属性値を得るには、`each()` で要素のループなどをしましょう。
6
6
 
7
+ ----
8
+
9
+ クリックされた<tr>に何かしたいのなら、以下のような感じです。
10
+ (<div>の直下に <tr> を入れるのは面倒なので<table>を入れてます)
11
+
12
+ ```html
13
+ <div id="bodyRight">
14
+ <div id="pageRight1">
15
+ <div id="tableBodyRight1">
16
+ <table>
17
+ <tr>...</tr>
18
+ <tr id="rightRow1_0"> <td>A0</td> <td>B0</td> <td>C0</td> </tr>
19
+ <tr id="rightRow1_1"> <td>A1</td> <td>B1</td> <td>C1</td> </tr>
20
+ <tr id="rightRow1_2"> <td>A2</td> <td>B2</td> <td>C2</td> </tr>
21
+ </table>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <script>
26
+ document.querySelector('#bodyRight').addEventListener('click', e => {
27
+ // 以前に付けたスタイルを解除する
28
+ const previouslySelected = e.currentTarget.querySelector('.selected');
29
+ if (previouslySelected)
30
+ previouslySelected.classList.remove('selected');
31
+
32
+ // クリックされた要素に直近の <tr> を探す
33
+ const clickedRow = e.target.closest('tr');
34
+ if (clickedRow) {
35
+ // クリックされた <tr> に何かする。ここではスタイルを付けている。
36
+ clickedRow.classList.add('selected');
37
+ }
38
+ });
39
+ </script>
40
+ <style>
41
+ .selected {
42
+ background-color: #cfc;
43
+ }
44
+ </style>
45
+ ```
46
+
47
+