回答編集履歴

4

文法の修正

2020/12/20 12:14

投稿

AT_2nd
AT_2nd

スコア266

answer CHANGED
@@ -21,15 +21,15 @@
21
21
  const c1 = document.querySelectorAll('.class-num1');
22
22
 
23
23
  c1.forEach(function(list)
24
-
24
+ {
25
25
  list.addEventListener('click', function()
26
26
  {
27
27
  c1.forEach(function(node)
28
28
  {
29
29
  this.nextElementSibling.setAttribute("style", node == this ? "display:block" : "display:none" );
30
30
  },this);
31
- })
31
+ });
32
- })
32
+ });
33
33
  ```
34
34
  余談ですが、表示/非表示を切り替えるなら、style属性を直接書き換えるのではなく、cssで非表示のクラスを作って、classListのadd,remove,toggleで対応するのが楽でいいです。
35
35
  ```css

3

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

2020/12/20 12:14

投稿

AT_2nd
AT_2nd

スコア266

answer CHANGED
@@ -9,4 +9,35 @@
9
9
  }
10
10
  ```
11
11
  ※追記
12
- NodeListでもforEachは有効でしたね。失礼しました。
12
+ NodeListでもforEachは有効でしたね。失礼しました。
13
+
14
+ これだけでは何なので、改めて回答します。
15
+ 質問のコードでは下記の点が問題になります。
16
+ 1.style属性の書き換えが両方ともdisplay:blockになっている。
17
+ 2.要素毎に表示/非表示の判別を行っていない。
18
+ 3.要素から次の兄弟要素を取得するなら、nextElementSiblingで一発。
19
+ これを踏まえまして、こんな感じで。
20
+ ```ここに言語を入力
21
+ const c1 = document.querySelectorAll('.class-num1');
22
+
23
+ c1.forEach(function(list)
24
+
25
+ list.addEventListener('click', function()
26
+ {
27
+ c1.forEach(function(node)
28
+ {
29
+ this.nextElementSibling.setAttribute("style", node == this ? "display:block" : "display:none" );
30
+ },this);
31
+ })
32
+ })
33
+ ```
34
+ 余談ですが、表示/非表示を切り替えるなら、style属性を直接書き換えるのではなく、cssで非表示のクラスを作って、classListのadd,remove,toggleで対応するのが楽でいいです。
35
+ ```css
36
+ .hide{display:none}
37
+ ```
38
+
39
+ ```Javascript
40
+ targetElement.classList.add("hide"); //非表示
41
+ targetElement.classList.remove("hide");//表示
42
+ targetElement.classList.toggle("hide");//切り替え
43
+ ```

2

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

2020/12/20 12:08

投稿

AT_2nd
AT_2nd

スコア266

answer CHANGED
@@ -1,4 +1,4 @@
1
- ~~NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
1
+ NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
2
2
  Array.fromを使うのがいいです。
3
3
  今回のケースで言えば、こんな感じです。
4
4
 
@@ -7,4 +7,6 @@
7
7
  {
8
8
  ...
9
9
  }
10
- ```~~
10
+ ```
11
+ ※追記
12
+ NodeListでもforEachは有効でしたね。失礼しました。

1

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

2020/12/20 11:34

投稿

AT_2nd
AT_2nd

スコア266

answer CHANGED
@@ -1,4 +1,4 @@
1
- NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
1
+ ~~NodeListのようなArrayっぽいオブジェクトをArrayとして扱いたいのであれば、
2
2
  Array.fromを使うのがいいです。
3
3
  今回のケースで言えば、こんな感じです。
4
4
 
@@ -7,4 +7,4 @@
7
7
  {
8
8
  ...
9
9
  }
10
- ```
10
+ ```~~