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

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

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

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

jQuery

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

Q&A

解決済

1回答

2431閲覧

bxsliderを使用したカルーセルについて(カルーセルを任意の枚数以上から動作開始させたい)

hiroaki_sato

総合スコア34

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2016/10/20 12:32

編集2016/10/21 07:25

bxsliderを使用してカルーセルを作成しています。

解決したい課題

例:
現在カルーセル表示が3になっております。
この状態ではカルーセル発動しないようにしたい。

それに合わせて4枚目以降が増えた場合はカルーセル発動させたい。

【現在1〜3枚の場合】 <1><2><3>
※カルーセル発動しない

【画像が増えた場合4枚目以上の場合】←<1>|<2><3><4>|←<1>
※左にカルーセルが動作し1〜4まで繰り返しスライドし続ける仕様

上記のような事をするのがイメージです。

下記現状設定

<div class="sec-inner wrapper"> <div class="mod-ga-adv"> <ul class="bx-ga-adv"> <li class="ls"> <div class="it"> <a href="#" class="trans"> <img src="img01.jpg" alt="hoge" /> </a> </div> </li> <li class="ls"> <div class="it"> <a href="#" target="_blank" target=”_blank" class="trans"> <img src="img02.jpg" alt="hoge" /> </a> </div> </li> <li class="ls"> <div class="it"> <a href="#" class="trans"> <img src="img03.jpg" alt="hoge" /> </a> </div> </li> </ul> </div> </div> </section>

if(

1 2 if( $(window).width() > 481 ) { 3 var bx_ga_adv = $('.bx-ga-adv').bxSlider({ 4 auto: true, 5 speed: 1000, 6 pause: 3500, 7 controls: true, 8 pager: false, 9 slideWidth: 296, 10 minSlides: 3, 11 maxSlides: 5, 12 slideMargin: 3, 13 moveSlides: 1 14 }); 15 } 16 else { 17 var bx_ga_adv = $('.bx-ga-adv').bxSlider({ 18 auto: true, 19 speed: 1000, 20 pause: 3500, 21 controls: true, 22 pager: false 23 });

こんな感じで記載があります。
他にも必要なじょうほうございましたらお願いいたします。

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

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

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

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

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

kei344

2016/10/20 16:06

コードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
hiroaki_sato

2016/10/21 07:15

ありがとうございます!こんな機能があったのですね。丁寧にご連絡いただきありがとうございました。
guest

回答1

0

ベストアンサー

すみません、私が解決したい課題を良く理解出来ていないだけなのかもしれないのですが、if文で処理を分岐させるのはいかがでしょうか。

//ID指定がある場合は下記で子要素を取得 var imgCount = document.getElementById("hoge").childElementCount; //imgCountをif文で判定 if(imgCount < 4){ //カルーセルでない処理 } else { if( $(window).width() > 481 ) { var bx_ga_adv = $('.bx-ga-adv').bxSlider({ auto: true, speed: 1000, pause: 3500, controls: true, pager: false, slideWidth: 296, minSlides: imgCount, //imgCountもしくは任意数を指定 maxSlides: imgCount, //imgCountもしくは任意数を指定 slideMargin: 3, moveSlides: 1 }); } else { var bx_ga_adv = $('.bx-ga-adv').bxSlider({ auto: true, speed: 1000, pause: 3500, controls: true, pager: false }); }

HTMLソースが無いのでなんとも言えないですが一例として。

投稿2016/10/21 02:44

nobinobi

総合スコア199

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

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

hiroaki_sato

2016/10/21 07:23

ご回答誠に感謝いたします。ありがとうございます!頂いた内容で確認しましたところエラーが起きてしまいました。 カルーセルが機能しない現象が起きました。
hiroaki_sato

2016/10/21 07:27

内容といたしましては、 カルーセルの画像枚数が4枚以上になった場合から カルーセルを発動させたいといった内容です。 現状デザイン的にも3枚は全て表に見えている状態なので カルーセルで動かす必要性が無いためです。
nobinobi

2016/10/21 07:51 編集

ご説明ありがとうございます。 では4枚以上の時のみbxslider(のカルーセルスクリプト)が発動すれば良いのですね。 エラーを教えて頂けますか? minSlides: imgCount, //imgCountもしくは任意数を指定 maxSlides: imgCount, //imgCountもしくは任意数を指定 エラーが発生しているのは上記あたりでしょうか?
nobinobi

2016/10/21 08:39 編集

すみません。 bxsliderを使ってる時点で共通クラスがあるのをわすれていました。 下記のように要素数を取得する場所を変更してみてください。 【変更前】 var imgCount = document.getElementById("hoge").childElementCount; 【変更後】 var imgCount = document.getElementsByClassName("bx-ga-adv").length; 一応、私の手元で動いたコードを載せておきます。 長いですが、ご了承下さい。 $(document).ready(function(){ Mybxslide(); }); function Mybxslide(){ //var ulObj = document.getElementById("hoge").children; var imgCount = document.getElementsByClassName("bx-ga-adv").length; console.log(imgCount); //imgCountをif文で判定 if(imgCount < 4){ //カルーセルでない処理 } else { if( $(window).width() > 481 ) { var bx_ga_adv = $('.bx-ga-adv').bxSlider({ auto: true, speed: 1000, pause: 3500, controls: true, pager: false, slideWidth: 296, minSlides: imgCount, maxSlides: imgCount, slideMargin: 3, moveSlides: 1 }); }else { var bx_ga_adv = $('.bx-ga-adv').bxSlider({ auto: true, speed: 1000, pause: 3500, controls: true, pager: false }); } //4枚以上のときのみ発動 $('.bxslider').bxSlider(); } } あと、どなたかできればコメント欄でコード表記にする方法を知っていたら教えて頂きたく思います。
hiroaki_sato

2016/10/22 09:43

ありがとうございました!! 解決いたしました。 複数のjavascriptがはいっていたのでそのあたりも衝突して 上手くいかなかったようです。 上記のコードとその部分を修正しましたら問題ございませんでした。 親切にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問