回答編集履歴

5

テキスト追加

2021/09/30 14:38

投稿

退会済みユーザー
test CHANGED
@@ -289,3 +289,63 @@
289
289
  ```
290
290
 
291
291
  を追加したらええと思うで。
292
+
293
+
294
+
295
+
296
+
297
+ #### 追記4
298
+
299
+
300
+
301
+ Accordionクラスのstaticなメソッドとして、すべてのアコーディオンを閉じる `closeAll()`を追加する。
302
+
303
+
304
+
305
+ ```diff
306
+
307
+ class Accordion {
308
+
309
+ static instancesMap = new Map;
310
+
311
+
312
+
313
+ + static closeAll() {
314
+
315
+ + Array.from(Accordion.instancesMap.values()).forEach(acc => acc.close());
316
+
317
+ + }
318
+
319
+ +
320
+
321
+ constructor(element) {
322
+
323
+ Accordion.instancesMap.set(element, this);
324
+
325
+ this.element = element;
326
+
327
+ ```
328
+
329
+
330
+
331
+ それで、メニューを閉じる処理の中で
332
+
333
+
334
+
335
+ > メニューを閉じた際にアコーディオンも閉じる処理を無理矢理書いた
336
+
337
+
338
+
339
+ コードの替わりに、アコーディオンを閉じる処理は、下記の一行
340
+
341
+
342
+
343
+ ```javascript
344
+
345
+ Accordion.closeAll();
346
+
347
+ ```
348
+
349
+
350
+
351
+ に任せればええんちゃうかな〜

4

テキスト追加

2021/09/30 14:38

投稿

退会済みユーザー
test CHANGED
@@ -235,3 +235,57 @@
235
235
 
236
236
 
237
237
  の6行を`open()` に追加やね。
238
+
239
+
240
+
241
+
242
+
243
+ #### 追記3
244
+
245
+
246
+
247
+ もうひとつ。 上に書いた**追記2** では、
248
+
249
+
250
+
251
+ - 自身(`this`)が`--one`を持っているときのみ、兄弟アコーディオンの中で開いているものを閉じる
252
+
253
+
254
+
255
+ ようにしているわけですが、これよりも自身を排他的に開く場合が増える条件として、
256
+
257
+
258
+
259
+ - 自身(`this`)が`--one`を持っているか、もしくは兄弟アコーディオンの中で開いているものが`--one`を持っていれば、兄弟アコーディオンの中で開いているものを閉じる。
260
+
261
+
262
+
263
+ ようにしたいのであれば、まずコンストラクターに以下の一行
264
+
265
+
266
+
267
+ ```diff
268
+
269
+ + this.isExclusive = this.element.classList.contains("--one");
270
+
271
+ ```
272
+
273
+ を追加する。これは排他的(exclusive)に開くアコーディオンであることを表すフラグや。これを使うて、`open()` には以下の6行
274
+
275
+ ```diff
276
+
277
+ + this.siblings.forEach(elm => {
278
+
279
+ + const sibling = Accordion.instancesMap.get(elm);
280
+
281
+ + if (sibling && sibling.isOpen && (this.isExclusive || sibling.isExclusive)) {
282
+
283
+ + sibling.close();
284
+
285
+ + }
286
+
287
+ + });
288
+
289
+ ```
290
+
291
+ を追加したらええと思うで。

3

テキスト追加

2021/09/30 00:26

投稿

退会済みユーザー
test CHANGED
@@ -156,7 +156,7 @@
156
156
 
157
157
 
158
158
 
159
- #### 追記
159
+ #### 追記1
160
160
 
161
161
 
162
162
 
@@ -183,3 +183,55 @@
183
183
  ```
184
184
 
185
185
  なのを追加や。
186
+
187
+
188
+
189
+
190
+
191
+ #### 追記2
192
+
193
+
194
+
195
+ `open()`メソッドに追加する、**追記1**の4行
196
+
197
+
198
+
199
+ ```diff
200
+
201
+ + this.siblings.forEach(elm => {
202
+
203
+ + const sibling = Accordion.instancesMap.get(elm);
204
+
205
+ + if (sibling && sibling.isOpen) sibling.close();
206
+
207
+ + });
208
+
209
+ ```
210
+
211
+
212
+
213
+ による兄弟アコーディオンを閉じる処理を、CSSクラス`--one`を持っているときのみ行うようにするには、この4行を
214
+
215
+ `if (this.element.classList.contains("--one")) {…}`で囲んだ以下
216
+
217
+
218
+
219
+ ```diff
220
+
221
+ + if (this.element.classList.contains("--one")){
222
+
223
+ + this.siblings.forEach(elm => {
224
+
225
+ + const sibling = Accordion.instancesMap.get(elm);
226
+
227
+ + if (sibling && sibling.isOpen) sibling.close();
228
+
229
+ + });
230
+
231
+ + }
232
+
233
+ ```
234
+
235
+
236
+
237
+ の6行を`open()` に追加やね。

2

テキスト追加

2021/09/29 23:46

投稿

退会済みユーザー
test CHANGED
@@ -11,6 +11,16 @@
11
11
 
12
12
 
13
13
  とあるように入れ子がある、ゆうたらツリーやんな。そやからちょっと工夫いるやろな。
14
+
15
+ なんや、自己解決っぽい回答に
16
+
17
+
18
+
19
+ > アコーディオンを最初から開いた状態は以下のようにしたら、できました。
20
+
21
+
22
+
23
+ とあったので、この回答では、開いているのをひとつだけにする方のみについて回答するわな。
14
24
 
15
25
 
16
26
 
@@ -124,6 +134,8 @@
124
134
 
125
135
 
126
136
 
137
+
138
+
127
139
   
128
140
 
129
141
       
@@ -135,3 +147,39 @@
135
147
 
136
148
 
137
149
  以上ですぅ。これでうまくいかへんやろか〜?
150
+
151
+
152
+
153
+
154
+
155
+ ----
156
+
157
+
158
+
159
+ #### 追記
160
+
161
+
162
+
163
+ 上に書いた追加するコードの中で、`open()` メソッドには1行、
164
+
165
+ ```diff
166
+
167
+ + this.siblings.forEach(elm => Accordion.instancesMap.get(elm).close());
168
+
169
+ ```
170
+
171
+ を追加すると書いたけど、ちょっと大雑把ゆうかせっかちやったな。もう少し丁寧に書けば、こない
172
+
173
+ ```diff
174
+
175
+ + this.siblings.forEach(elm => {
176
+
177
+ + const sibling = Accordion.instancesMap.get(elm);
178
+
179
+ + if (sibling && sibling.isOpen) sibling.close();
180
+
181
+ + });
182
+
183
+ ```
184
+
185
+ なのを追加や。

1

テキスト追加

2021/09/29 12:26

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- るように入れ子がある、ゆうたらツリーやんな。そやからちょっと工夫いるやろな。
13
+ るように入れ子がある、ゆうたらツリーやんな。そやからちょっと工夫いるやろな。
14
14
 
15
15
 
16
16