質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

3182閲覧

アコーディオンメニューが動きません

spraut

総合スコア6

メニュー

メニューは、UIにおける仕組みであり、ユーザに機能の表示と実行する手段を与えます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/08/20 07:25

前提・実現したいこと

サイト内の絞り込み検索のメニューをアコーディオンメニューにしたいのですが、
メニュー部分が閉じたままになってしまい開きません。
ファイルを分けず、一つのHTMLファイルで書いていた時は正常に開閉したのですが
ファイルを分け、外部ファイルとして読み込もうとしたら動かなくなりました。

発生している問題・エラーメッセージ

・アコーディオンを設定しているコードが反映されない ・ERROR:Parsing error:Unezpected token ) というエラーメッセージも出ています

該当のソースコード

HTML

1<section class="accordion"> 2 <div class="accordion__container"> 3 <h4 class="accordion__title js-accordion-title">検索条件で絞る</h4> 4 <div class="accordion__content"> 5 <form action="./" method="get" enctype="multipart/form-data"> 6 <div class="filter" id="js_filter"> 7 <dl> 8 <dt>家族構成</dt> 9 <dd class="family"> 10 <ul class="list-check clearfix filter-cond"> 11 <li> 12 <input type="checkbox" name="cat" value="fa1" id="family01" > 13 <label for="family01" class="checkbox">独身</label> 14 </li> 15 <li> 16 <input type="checkbox" name="cat" value="fa2" id="family02" > 17 <label for="family02" class="checkbox">2世帯</label> 18 </li> 19 <li> 20 <input type="checkbox" name="cat" value="fa3" id="family03" > 21 <label for="family03" class="checkbox">夫婦のみ</label> 22 </li> 23 <li> 24 <input type="checkbox" name="cat" value="fa4" id="family04" > 25 <label for="family04" class="checkbox">ペット</label> 26 </li> 27 <li> 28 <input type="checkbox" name="cat" value="fa5" id="family05" > 29 <label for="family05" class="checkbox">その他</label> 30 </li> 31 </ul> 32 </dd> 33 </dl> 34 35 <dl> 36 37 38 <button id="filterBtn">上記の条件で施工実例を検索する</button> 39 </form> 40 </div> 41 </div> 42 </section>

CSS

1.accordion{ 2 margin-top: 10px; 3} 4.accordion__container { 5 width: 900px; 6 margin: 0 auto; 7 8} 9 10.accordion__title { 11 width: 200px; 12 background-color: #b25332; 13 border: 1px solid transparent; 14 color: #fff; 15 font-size: 1.25em; 16 padding: .625em .625em .625em .1em; 17 position: relative; 18 cursor: pointer; 19 user-select: none; 20 text-align: center; 21 font-weight: normal; 22 font-size: 15px; 23} 24 25.accordion__title::before, .accordion__title::after { 26 content: ''; 27 display: block; 28 background-color: #fff; 29 position: absolute; 30 top: 50%; 31 width: 15px; 32 height: 2px; 33 right: 25px; 34} 35 36.accordion__title::after { 37 transform: rotate(90deg); 38 transition-duration: .3s; 39} 40 41.accordion__title:hover, 42.accordion__title:active, 43.accordion__title.is-active { 44 background-color: #b25332; 45} 46 47.accordion__title.is-active::before { 48 opacity: 0; 49} 50 51.accordion__title.is-active::after { 52 transform: rotate(0); 53} 54 55.accordion__content { 56 border-left: 1px solid transparent; 57 border-right: 1px solid transparent; 58 padding: 0 1.5em; 59 line-height: 0; 60 height: 0; 61 overflow: hidden; 62 opacity: 0; 63 transition-duration: .3s; 64 background-color: rgba(255,255,255,0.6); 65} 66 67.accordion__content.is-open { 68 border: 1px solid #b25332; 69 padding: .625em 1.5em; 70 line-height: normal; 71 height: auto; 72 opacity: 1; 73}

JavaScript

1document.addEventListener("DOMContentLoaded",() => { 2 const title = document.querySelectorAll('.js-accordion-title'); 3 4 for (let i = 0; i < title.length; i++){ 5 let titleEach = title[i]; 6 let content = titleEach.nextElementSibling; 7 titleEach.addEventListener('click', () => { 8 titleEach.classList.toggle('is-active'); 9 content.classList.toggle('is-open'); 10 }); 11 } 12 13});

補足情報(FW/ツールのバージョンなど)

https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js
を読み込んでいます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/20 07:48

「検索条件で絞る」をクリックして、次の要素(div.accordion__content?)の クラスをつけ外しするという認識でよいですか?
guest

回答2

0

ベストアンサー

下記の可能性はありませんか?

①HTMLで読み込みのパスが間違っている(適当な例:<script src="js/ファイル名.js"></script>

②分けた先のJavaScriptファイル側で<script>で囲ってしまっている。

投稿2020/08/20 07:51

編集2020/08/20 07:52
pondering

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spraut

2020/08/20 08:24

ありがとうございます! 勘違いをしていてCSSと同じように<link>で設定してしまっていました。 こんなお恥ずかしい質問に答えてくださりありがとうございました。
guest

0

css

1.is-active{color:red} 2.accordion__content{display:none} 3.accordion__content.is-open{display:initial}

投稿2020/08/20 07:50

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/08/20 07:52

とりあえずjsはHTMLの後ろの方で宣言してください
spraut

2020/08/20 08:27

ありがとうございます! とても参考になりました。 HTMLの後ろのほうで宣言したほうがいいということはscriptタグはhead内でしか書けないというようなルールはないということでしょうか•••?
yambejp

2020/08/20 08:36

jsは基本どこ書いてもよいですが、headかbodyのどこかに書くとよいです headに書く場合は、html全体が読み込まれた後に実行されるような書き方をする必要があります
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問