別ページから、飛んできた場合に、
特定の項目のアコーディオンを開いた状態にしたいのですが
中々うまくいかず、下記のコードも入れてみましたが動きませんでした。
実現したいこと
別ページからのリンクで指定したアコーディオンを開いた状態で表示したいです。
該当のソースコード
<!DOCTYPE html> <html> <head> <title>TITLE</title> <meta description=""> <meta charset="utf-8"> </head> <style> h1 { font-weight: bold; font-size: 1.5em; text-align: center; } .inner { max-width: 940px; padding: 10px; margin: 0 auto; } #main { text-align: center; } /* 多階層のアコーディオンパネル */ #accordion-panel dt { cursor: pointer; margin-bottom: 1px; } #accordion-panel dd .inner { background-color: #f5f5f5; border: 1px solid #ccc; margin: 3px 0; } #accordion-panel dd { display: none; } .layer-1 dt { background-color: #9aabf3; padding: 5px 0; font-size: 1.25em; text-align: center; color: #0d2170; } .layer-2 dt { background-color: #b8c4f7; padding: 5px 0; font-size: 1.0em; text-align: center; color: #0d2170; } .layer-3 dt { background-color: #d7defa; margin-bottom: 1px; padding: 5px 0; font-size: 0.8em; text-align: center; color: #0d2170; } </style> <!-- ▲ CSS ▲ --> <body> <!-- ▼ container ▼ --> <div id="container"> <!-- ▼ header ▼ --> <div id="header"> <div class="inner"> <h1>多階層のアコーディオンパネル</h1> </div> <!-- /.inner --> </div> <!-- /#header --> <!-- ▲ header ▲ --> <!-- ▼ main ▼ --> <div id="main"> <div class="inner"> <div id="accordion-panel"> <dl class="layer-1"> <dt>製品情報</dt> <dd> <dl class="layer-2"> <dt>無線LAN・有線LAN</dt> <dd> <dl class="layer-3"> <dt>無線LAN</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>有線LAN</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> <dt>ハードディスク</dt> <dd> <dl class="layer-3"> <dt>外付けHDD</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>ポータブルHDD</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> <dt>映像・音響機器</dt> <dd> <dl class="layer-3"> <dt>HDDレコーダー</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>メディアプレーヤー</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> </dl> </dd> <dt>サポート</dt> <dd> <dl class="layer-2"> <dt>よくある質問</dt> <dd> <dl class="layer-3"> <dt>法人のお客様</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>個人のお客様</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> <dt>サポートセンター</dt> <dd> <dl class="layer-3"> <dt>パソコン関連</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>家電関連</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> <dt>修理窓口</dt> <dd> <dl class="layer-3"> <dt>東日本修理サービス</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>西日本修理サービス</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> </dl> </dd> <dt>会社情報</dt> <dd> <dl class="layer-2"> <dt>会社案内</dt> <dd> <dl class="layer-3"> <dt>会社概要</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>会社沿革</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> <dt>環境への取り込み</dt> <dd> <dl class="layer-3"> <dt>環境技術</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>環境報告書</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> <dt>採用情報</dt> <dd> <dl class="layer-3"> <dt>新卒採用</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> <dt>キャリア採用</dt> <dd> <div class="inner"> <p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p> </div> </dd> </dl> </dd> </dl> </dd> </dl> </div> <!-- /#accordion-panel --> </div> <!-- /.inner --> </div> <!-- /#main --> <!-- ▲ main ▲ --> </div> <!-- /#container --> <!-- ▲ container ▲ --> <!-- ▼ jQuery ▼ --> <script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script> <script> $(function(){ var ap = $('#accordion-panel'); ap.find('dt').on('click', function(){ var flag = $(this).next('dd').is(":hidden"); $(this).siblings('dd').slideUp(); /* 同階層の dd 要素を非表示 */ $(this).siblings('dd').find('dd').slideUp(); /* 同階層の dd 要素以下の dd 要素を非表示*/ if (flag) { $(this).next('dd').slideDown(); } else { $(this).next('dd').slideUp(); } }); }); </script> <!-- ▲ jQuery ▲ --> </body> </html>
試したこと
下記のコードも試してみたのですが、
どこにidやclassを入れたら動くのかわからず悩んでます。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <style> /* 元々のjsを活かしたかった為、コメントアウトしました。 .help dd{ overflow: hidden; height: 0; padding: 0; } */ .help dd{/* 代わりに「display: none;」で非表示としました */ display: none; } .help dd:target{ display: block; /* #によるtargetが効いたときに表示*/ height: auto; padding: 1rem; } </style> <div class="help"> <dl> <dt>ハロウィンとは?</dt> <dd id="dd1">大の大人がトラックを横転させたり物騒な事件が起こる夜のこと。</dd> </dl> <dl> <dt>ヘルプとは</dt> <dd>ヘルプについての質問が入ります。</dd> </dl> <dl> <dt>ヘルプとは02</dt> <dd>ヘルプについての質問が入ります。</dd> </dl> <dl> <dt>ヘルプとは03</dt> <dd>ヘルプについての質問が入ります。</dd> </dl> <dl> <dt>ヘルプとは04</dt> <dd id="help04">ヘルプについての質問が入ります。</dd> </dl> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script> $(window).on('load', function () { $(function(){ $(".help dt").click(function(){ $(this).toggleClass("show"); $(this).next().slideToggle(); return false; }); }); }); </script> `
最後まで読んでくださりありがとうございます。
ご回答いただければ幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。