teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

chousei

2020/07/24 16:20

投稿

yambejp
yambejp

スコア117906

answer CHANGED
@@ -1,3 +1,71 @@
1
1
  ```javascript
2
2
  const btn = document.querySelector('.btn');
3
+ ```
4
+
5
+ # 追記
6
+ 複数のmenuを想定しているならこんな感じ
7
+ OPEN/CLOSEを意識すること。
8
+ 非表示は高さの設定よりdisplayでやるほうが一般的です。
9
+
10
+ ```javascript
11
+ <script>
12
+ window.addEventListener('DOMContentLoaded',()=>{
13
+ document.querySelectorAll('.menu').forEach(x=>{
14
+ x.style.display="none";
15
+ });
16
+ document.querySelectorAll('.btn').forEach(x=>{
17
+ x.addEventListener('click',e=>{
18
+ var flg=x.textContent=="OPEN";
19
+ x.nextElementSibling.style.display=flg?"initial":"none";
20
+ x.textContent=flg?"CLOSE":"OPEN";
21
+ });
22
+ });
23
+ });
24
+ </script>
25
+ <div class="contentsWrap">
26
+ <p class="btn">OPEN</p>
27
+ <ul class="menu">
28
+ <li>menu</li>
29
+ <li>menu02</li>
30
+ <li>menu03</li>
31
+ <li>menu04</li>
32
+ <li>menu05</li>
33
+ <li>menu06</li>
34
+ </ul>
35
+ </div>
36
+ <div class="contentsWrap">
37
+ <p class="btn">OPEN</p>
38
+ <ul class="menu">
39
+ <li>menu</li>
40
+ <li>menu02</li>
41
+ <li>menu03</li>
42
+ <li>menu04</li>
43
+ <li>menu05</li>
44
+ <li>menu06</li>
45
+ </ul>
46
+ </div>
47
+
48
+ </script>
49
+ <div class="contentsWrap">
50
+ <p class="btn">OPEN</p>
51
+ <ul class="menu">
52
+ <li>menu</li>
53
+ <li>menu02</li>
54
+ <li>menu03</li>
55
+ <li>menu04</li>
56
+ <li>menu05</li>
57
+ <li>menu06</li>
58
+ </ul>
59
+ </div>
60
+ <div class="contentsWrap">
61
+ <p class="btn">OPEN</p>
62
+ <ul class="menu">
63
+ <li>menu</li>
64
+ <li>menu02</li>
65
+ <li>menu03</li>
66
+ <li>menu04</li>
67
+ <li>menu05</li>
68
+ <li>menu06</li>
69
+ </ul>
70
+ </div>
3
71
  ```