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

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

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

Q&A

解決済

1回答

2781閲覧

【jQuery】アコーディオン部分が開ききらない動作

k-katapashi

総合スコア18

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2019/01/24 10:12

編集2019/01/24 10:15

前提・実現したいこと

シンプルなHTMLコーディングによるサイトを制作しています。
https://liginc.co.jp/web/js/jquery/34048
↑このページを参考にしてアコーディオンを実装したのですが、開閉がうまくいかない(全部開ききらない)ようで、原因を究明しています。

イメージ説明

現象としては、
●FireFoxやChromeでは開く動作が途中で止まるのに、IEだと全部開く
●稀に全部開く時もあるが、途中で止まる時が多い
●1つのhtml内に複数のアコーディオンを入れている(構造が同じ)が、全てのアコーディオンが開ききらないわけではない
以上を確認しています。
なお、ブラウザキャッシュはクリアして動作を確認しています。

コードの記述は以下の通りです。

html

1 <div class="dtl-wrap"> 2 <div class="dtl"> 3 <p class="dtl-trigger dtl_more"></p> 4 <div class="dtl-item"> 5 <p>テキストが入ります。テキストが入ります。テキストが入ります。</p> 6 </div> 7 </div> 8 </div>

css

1.dtl-wrap {position: relative;} 2.dtl-wrap + .dtl-wrap {margin-top: 40px;} 3 4.dtl-trigger { 5 cursor:pointer; 6 display: block; 7 position: absolute; 8 width: 10%; 9 text-align: center; 10 top:0; 11 right:0; 12 height: 22px; 13 border: 1px solid #000; 14 padding: 0.5% 2%; 15 color:#000; 16 -webkit-transition: all 0.3s ease; 17 -moz-transition: all 0.3s ease; 18 -o-transition: all 0.3s ease; 19 transition: all 0.3s ease; 20} 21.dtl-trigger:hover {background-color: #fff;color:#000;opacity:1;} 22.dtl-trigger::after {content: "続きを読む";} 23 24.dtl-item {position: relative;overflow: hidden;} 25.dtl-item.is-hide {height: 80px;} 26.dtl-item::before { 27 display: block; 28 position: absolute; 29 bottom: 0; 30 left: 0; 31 content: ""; 32 width: 100%; 33 height: 40px; 34 background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0.9) 50%, #fff 100%); 35 background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0.9) 50%, #fff 100%); 36 background: -ms-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0.9) 50%, #fff 100%); 37 background: linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.9) 75%, rgba(255,255,255,0.9) 50%, #fff 100%); 38} 39.dtl-trigger.is-show {bottom: -2em;background:#000;color:#FFF;} 40.dtl-trigger.is-show::after {content: "閉じる";} 41.dtl-trigger.is-show + .dtl-item::before {display: none;}

js

1 <script> 2 var itemHeights = []; 3 var returnHeight; 4 $(function(){ 5 $(".dtl-item").each(function(){ 6 var thisHeight = $(this).height(); 7 itemHeights.push(thisHeight); 8 $(this).addClass("is-hide"); 9 returnHeight = $(this).height(); 10 }); 11 }); 12 $(".dtl-trigger").click(function(){ 13 if(!$(this).hasClass("is-show")) { 14 var index = $(this).index(".dtl-trigger"); 15 var addHeight = itemHeights[index]; 16 $(this).addClass("is-show").next().animate({height: addHeight},500).removeClass("is-hide"); 17 } else { 18 $(this).removeClass("is-show").next().animate({height: returnHeight},500).addClass("is-hide"); 19 } 20 }); 21 </script>

考えられる原因に心当たりがある方、解決策をご教示いただけますと幸いです。
宜しくお願い致します。

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

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

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

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

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

yambejp

2019/01/24 10:18

コピペしても異常のところまでたどりつきません codepenあたりにソースをあげられませんか?
k-katapashi

2019/01/24 11:01

ご回答ありがとうございます。 codepenであげようとしたところ、jsにおいて「index.js: Unexpected token, expected } (10:14)」というエラーが出現し、あげられませんでした。
退会済みユーザー

退会済みユーザー

2019/01/25 00:11

一番最後のアコーディオン要素か鍵だな
k-katapashi

2019/01/25 00:44

ご回答ありがとうございます。 scriptに原因がある可能性がある、ということでしょうか? たしかに、codepenでもエラーが出現していますので、可能性は高そうですね。 「index.js: Unexpected token, expected } (10:14)」の意味を解読できれば解決の糸口が見つかりそうなのですが…
yambejp

2019/01/25 01:26

「Unexpected token, expected 」で検索するとヒットするのは React絡みが多いようですが、あくまでもjQueryで間違いないですか? またライブラリ以外のjsは外部化せずにhtml内に書き込んでみてください
guest

回答1

0

ベストアンサー

コードにはありませんが、画像を使っていますよね?
画像読み込み前に高さを取得しているためにずれていると思われます。
あらかじめ画像の大きさを指定しておくか、window.onload を使ってみてください。

jQuery

1$(window).on('load', function() { 2 ... 3});

投稿2019/01/25 01:46

x_x

総合スコア13749

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

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

k-katapashi

2019/01/29 02:37

ご回答ありがとうございます! 仰る通り、画像を使ったものを想定しています。 高さ指定が難しい状況でしたので、window.onloadを使ってみたところ、正常な動作をするようになりました。 本件、無事に解決いたしました! ありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問