回答編集履歴

4

文法の修正

2020/12/20 12:14

投稿

AT_2nd
AT_2nd

スコア266

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  c1.forEach(function(list)
46
46
 
47
-
47
+ {
48
48
 
49
49
  list.addEventListener('click', function()
50
50
 
@@ -58,9 +58,9 @@
58
58
 
59
59
  },this);
60
60
 
61
- })
61
+ });
62
62
 
63
- })
63
+ });
64
64
 
65
65
  ```
66
66
 

3

一旦取り下げましたが、改めて回答します。

2020/12/20 12:14

投稿

AT_2nd
AT_2nd

スコア266

test CHANGED
@@ -21,3 +21,65 @@
21
21
  ※追記
22
22
 
23
23
  NodeListでもforEachは有効でしたね。失礼しました。
24
+
25
+
26
+
27
+ これだけでは何なので、改めて回答します。
28
+
29
+ 質問のコードでは下記の点が問題になります。
30
+
31
+ 1.style属性の書き換えが両方ともdisplay:blockになっている。
32
+
33
+ 2.要素毎に表示/非表示の判別を行っていない。
34
+
35
+ 3.要素から次の兄弟要素を取得するなら、nextElementSiblingで一発。
36
+
37
+ これを踏まえまして、こんな感じで。
38
+
39
+ ```ここに言語を入力
40
+
41
+ const c1 = document.querySelectorAll('.class-num1');
42
+
43
+
44
+
45
+ c1.forEach(function(list)
46
+
47
+
48
+
49
+ list.addEventListener('click', function()
50
+
51
+ {
52
+
53
+ c1.forEach(function(node)
54
+
55
+ {
56
+
57
+ this.nextElementSibling.setAttribute("style", node == this ? "display:block" : "display:none" );
58
+
59
+ },this);
60
+
61
+ })
62
+
63
+ })
64
+
65
+ ```
66
+
67
+ 余談ですが、表示/非表示を切り替えるなら、style属性を直接書き換えるのではなく、cssで非表示のクラスを作って、classListのadd,remove,toggleで対応するのが楽でいいです。
68
+
69
+ ```css
70
+
71
+ .hide{display:none}
72
+
73
+ ```
74
+
75
+
76
+
77
+ ```Javascript
78
+
79
+ targetElement.classList.add("hide"); //非表示
80
+
81
+ targetElement.classList.remove("hide");//表示
82
+
83
+ targetElement.classList.toggle("hide");//切り替え
84
+
85
+ ```

2

質問の趣旨に合わない回答でした。

2020/12/20 12:08

投稿

AT_2nd
AT_2nd

スコア266

test CHANGED
@@ -1,4 +1,4 @@
1
- ~~NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
1
+ NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
2
2
 
3
3
  Array.fromを使うのがいいです。
4
4
 
@@ -16,4 +16,8 @@
16
16
 
17
17
  }
18
18
 
19
- ```~~
19
+ ```
20
+
21
+ ※追記
22
+
23
+ NodeListでもforEachは有効でしたね。失礼しました。

1

NodeListでもforEachは有効でしたね。失礼しました。

2020/12/20 11:34

投稿

AT_2nd
AT_2nd

スコア266

test CHANGED
@@ -1,4 +1,4 @@
1
- NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
1
+ ~~NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
2
2
 
3
3
  Array.fromを使うのがいいです。
4
4
 
@@ -16,4 +16,4 @@
16
16
 
17
17
  }
18
18
 
19
- ```
19
+ ```~~