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

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

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

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

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

5981閲覧

Bootstrapでカルーセル毎に切替時間を設定する(画像が切り替わるタイミングでJavaScriptを実行)

lilili

総合スコア17

JavaScript

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

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2016/04/11 10:50

編集2016/04/12 01:10

お世話になってます。

Bootstrapのカルーセルで5枚の画像を切り替え表示しています。
1枚目の画像だけ長めに表示したいのですが、うまくいきません。
以下のいずれかについてアドバイスいただきたいです。

・Bootstrap のカルーセルに、各画像へ切替時間を設定する方法はあるか
・JavaScript でカルーセルが切り替わるタイミングを取得することができるか($(document).ready(function(){・・・}); ではうまくいきませんでした)
・レスポンシブかつ各画像に切替時間を設定することのできるスライダーのご紹介

自分で試してみて、うまくいかなかったことは以下の通りです。

#carousel に data-interval=6000 のように設定すると、画像の切り替え時間を設定することができるので、この data-interval の値をJavaScriptで切り替えられないかと思い、以下のように記述してみました。

html

1<div id="carousel" class="carousel slide" data-ride="carousel"> 2 <ol class="carousel-indicators"> 3 <li data-target="#carousel" data-slide-to="0" class="active" id="pic1"></li> 4 <li data-target="#carousel" data-slide-to="1" class="" id="pic2"></li> 5 <li data-target="#carousel" data-slide-to="2" class="" id="pic3"></li> 6 <li data-target="#carousel" data-slide-to="3" class="" id="pic4"></li> 7 <li data-target="#carousel" data-slide-to="4" class="" id="pic5"></li> 8 </ol> 9 10 <div class="carousel-inner"> 11 <div class="item active"> 12 <img src="01.jpg" alt="" width="100%" /> 13 </div> 14 <div class="item"> 15 <img src="02.jpg" alt="" width="100%" /> 16 </div> 17 <div class="item"> 18 <img src="03.jpg" alt="" width="100%" /> 19 </div> 20 <div class="item"> 21 <img src="04.jpg" alt="" width="100%" /> 22 </div> 23 <div class="item"> 24 <img src="05.jpg" alt="" width="100%" /> 25 </div> 26 </div> 27</div> 28 29<script> 30$(document).ready(function(){ 31 if ($("#pic1").hasClass("active")) { 32 $("#carousel").attr('data-interval', '6000'); 33 }else{ 34 $("#carousel").attr('data-interval', '3000'); 35 } 36}); 37</script>

上記の記述だと、1枚目の#pic1に6000をセットしたままになり、他の画像に3000をセットできません。

アドバイスいただきたいです。
どうぞよろしくお願いします。

#追記
kei344様のアドバイスを受け、以下のように修正してみました。

JavaScript

1$(document).ready(function(){ 2 $('#carousel').on('slid.bs.carousel', function () { 3 if ($("#pic1").hasClass("active")) { 4 $('#carousel').carousel( { interval: 6000 } ); 5 }else{ 6 $('#carousel').carousel( { interval: 3000 } ); 7 } 8 }); 9}); 10 11//もしくは 12 13$(document).ready(function(){ 14 $('#carousel').on('slid.bs.carousel', function () { 15 if ($("#pic1").hasClass("active")) { 16 $('#carousel').attr('data-interval', '6000'); 17 }else{ 18 $('#carousel').attr('data-interval', '3000'); 19 } 20 }); 21});

どちらの書き方でも指定した秒数が反映されず、デフォルトの5000が効いてしまっているようでした。
2つめの書き方の場合、画像が切り替わるたびにdata-intervalに値がセットされているのは確認できましたが、やはり効いてはいませんでした。

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

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

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

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

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

guest

回答1

0

ベストアンサー

イベント slid.bs.carousel で切り替わりを捉えられそうです。

JavaScript

1$( '#carousel' ).on( 'slid.bs.carousel', function() { 2 if ( $( '#pic1' ).hasClass( 'active' ) ) { 3 $( '#carousel' ).carousel( { interval: 6000 } ); 4 }else{ 5 $( '#carousel' ).carousel( { interval: 3000 } ); 6 } 7});

【Bootstrap3 スライダーとCarouselの簡単な使い方】
http://designup.jp/bootstrap3-carousel-193/

【Bootstrap JS Carousel Reference】
http://www.w3schools.com/bootstrap/bootstrap_ref_js_carousel.asp


追記:

pause/cycle が 一時停止/再開 ならこう書けるかも。

JavaScript

1$( '#carousel' ).on( 'slid.bs.carousel', function() { 2 if ( $( '#pic1' ).hasClass( 'active' ) ) { 3 setTimeout( function() { 4 $('#carousel').carousel( 'cycle' ); 5 }, 6000 ); 6 $('#carousel').carousel( 'pause' ); 7 } 8});

投稿2016/04/11 12:09

編集2016/04/12 01:51
kei344

総合スコア69400

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

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

lilili

2016/04/12 01:10

回答いただきありがとうございます! slid.bs.carousel を初めて知りました。 ただ、切り替わりは捉えられましたが、セットした秒数が反映されず… 追記しました。
kei344

2016/04/12 01:52

補足を追記しました。
lilili

2016/04/15 16:00

ありがとうございます!!!無事できました〜! 助かりました…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問