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

質問編集履歴

1

ハッシュを追加したプログラムの修正と出来なかったことを追記

2021/04/09 01:03

投稿

unwind
unwind

スコア19

title CHANGED
File without changes
body CHANGED
@@ -92,7 +92,7 @@
92
92
  </head>
93
93
  <body>
94
94
  sub_list_1-1-1<br>
95
- <a href="test_toggle.html">戻る</a>
95
+ <a href="index.html">戻る</a>
96
96
  </body>
97
97
  </html>
98
98
  ```
@@ -137,4 +137,125 @@
137
137
  また、PHPのPOSTを用いて、アコーディオンリストの特定の場所を開いた方がいいのかわかりません。
138
138
 
139
139
  皆様方からご助言を頂ければと存じます。
140
- お手数ですが、宜しくお願い致します。
140
+ お手数ですが、宜しくお願い致します。
141
+
142
+ ### 追記(2021/4/9)
143
+ hentaiman様のご教授の元、下記プログラムのようにハッシュタグを入れてみました。
144
+
145
+ ### ソース(2021/4/9)
146
+ index.html
147
+ ```html
148
+ <!DOCTYPE html>
149
+ <html lang="ja">
150
+
151
+ <head>
152
+ <meta charset="UTF-8">
153
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
154
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
155
+ <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
156
+ <title>test</title>
157
+ </head>
158
+
159
+ <body>
160
+ <ul class="accordionBox">
161
+ <li>
162
+ <h3>main menu 1</h3>
163
+ <ul class="subMenu">
164
+ <li>
165
+ <h4>sub menu 1-1</h4>
166
+ <ul class="subList">
167
+ <li id="sub_list_1-1-1"><a href="./sub_list_1-1-1.html">sub list 1-1-1</a></li>
168
+ <li id="sub_list_1-1-2"><a href="./sub_list_1-1-2.html">sub list 1-1-2</a></li>
169
+ </ul>
170
+ </li>
171
+ <li>
172
+ <h4>sub menu 1-2</h4>
173
+ <ul class="subList">
174
+ <li id="sub_list_1-2-1"><a href="./sub_list_1-2-1.html">sub list 1-2-1</a></li>
175
+ <li id="sub_list_1-2-2"><a href="./sub_list_1-2-2.html">sub list 1-2-2</a></li>
176
+ </ul>
177
+ </li>
178
+ </ul><!-- subMenu -->
179
+ </li>
180
+ <li>
181
+ <h3>main menu 2</h3>
182
+ <ul class="subMenu right">
183
+ <li>
184
+ <h4>sub menu 2-1</h4>
185
+ <ul class="subList">
186
+ <li id="sub_list_2-1-1"><a href="./sub_list_2-1-1.html">sub list 2-1-1 </a></li>
187
+ <li id="sub_list_2-1-2"><a href="./sub_list_2-2-1.html">sub list 2-1-2</a></li>
188
+ </ul>
189
+ </li>
190
+ <li>
191
+ <h4>sub menu 2-2</h4>
192
+ <ul class="subList">
193
+ <li id="sub_list_2-2-1"><a href="./sub_list_2-2-1.html">sub menu 2-2-1</a></li>
194
+ <li id="sub_list_2-2-2"><a href="./sub_list_2-2-2.html">sub menu 2-2-2</a></li>
195
+ </ul>
196
+ </li>
197
+ </ul><!-- subMenu -->
198
+ </li>
199
+ </ul><!-- accordionBox -->
200
+ </body>
201
+ </html>
202
+ ```
203
+
204
+ sub_list_1-1-1.html ~ sub_list_2-2-2.html
205
+ ```html
206
+ <!DOCTYPE html>
207
+ <html lang="ja">
208
+ <head>
209
+ <meta charset="UTF-8">
210
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
211
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
212
+ <title>sub_list_1-1-1</title>
213
+ </head>
214
+ <body>
215
+ sub_list_1-1-1<br>
216
+ <a href="index.html#sub_list_1-1-1">戻る</a>
217
+ </body>
218
+ </html>
219
+ ```
220
+
221
+ ```javascript
222
+ $(function() {
223
+ $("ul.subMenu").hide();
224
+ $("ul.subList").hide();
225
+
226
+ let hash = location.hash;
227
+ $(hash).next("ul.accordionBox").addClass('open');
228
+ $(hash).next("ul.subMenu").addClass('open');
229
+ $(hash).next("ul.subList").addClass('open');
230
+ $('ul.subList:not(.open)').hide();
231
+
232
+ console.log("hash_is:" + hash);
233
+
234
+ $("ul.accordionBox h3").click(function() {
235
+ $(this).next("ul.subMenu").slideToggle('fast');
236
+ $("ul.subMenu").not($(this).next("ul.subMenu")).slideUp();
237
+ $("ul.subList").not($(this).next("ul.subList")).slideUp();
238
+
239
+ });
240
+
241
+ $("ul.subMenu h4").click(function() {
242
+ $(this).next("ul.subList").slideToggle('fast');
243
+ $("ul.subList").not($(this).next("ul.subList")).slideUp();
244
+
245
+ });
246
+ });
247
+ ```
248
+
249
+ ### できなかったこと
250
+ hashを指定しても、javascriptの下記のソースのところが悪いのか、うまく開けませんでした。
251
+
252
+ ```javascript
253
+ let hash = location.hash;
254
+ $(hash).next("ul.accordionBox").addClass('open');
255
+ $(hash).next("ul.subMenu").addClass('open');
256
+ $(hash).next("ul.subList").addClass('open');
257
+ $('ul.subList:not(.open)').hide();
258
+ ```
259
+
260
+ ハッシュを入れて、アコーディオンメニューを開いた状態にするために、どうすればよいか、
261
+ 引き続きご教授いただけたらと存じます。