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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

2189閲覧

jQueryプラグインSlick(スライダー)を使用し、JavaScriptで特定の日付(ex.>5,15,25の日)だけにバナーを出したい

k.yyyy1101

総合スコア13

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/11/11 06:55

前提・実現したいこと

jQueryプラグインSlick(スライダー)を使用し、JavaScriptで特定の日付(ex.>5,15,25の日)だけに特定のバナーが出るようにしたい。

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

slickを使用した状態で以下のようにコードを書くと、バナー画像を表示・非表示にすることができました。
しかしながら、スライダーの下部に表示されるドットの数が、

<li id="special">がdisplay:none;の時、バナーの枚数と合いません。 (バナー画像は3枚なのに、ドット自体は4つ表示されている)

ドットの数が合うようにするにはどうしたらいいのでしょうか。

該当のソースコード

<ul id="slider"> <li id="special"><a><img src="special_bnr.png"></a></li> <li><a href="url1.html"><img src="bnr.png"></a></li> <li><a href="url2.html"><img src="bnr2.png"></a></li> <li><a href="url3.html"><img src="bnr3.png"></a></li> </ul> <script type="text/javascript"> var d = new Date(); var day = d.getDate(); if(day == 5 || day == 15 || day == 25){ document.getElementById("special").style.display="block"; }else{ document.getElementById("special").style.display="none"; var slickDot = document.getElementsByClassName("slick-dots"); var liLastElementChild = slickDot.lastElementChild; liLastElementChild.addClass("dotnone"); } </script> <style> .dotnone{ display: none !important; } </style> <script type="text/javascript"> $(document).ready(function(){ $('#alpha_eyecatch').slick({ autoplay: true, dots: true, arrows: true, prevArrow:'<div class="prev"><img src="slick/btn_prev.png"></div>', nextArrow:'<div class="next"><img src="slick/btn_next.png"></div>' }); }); </script>

試したこと

slickのドットにclassを加え、バナー画像と同様に、display:none;をかけるように
コードを書いてみたものの、スタイルが効いていないようです。
(Jsは初心者です。)

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Slickは、デフォルトでは、それを適用した要素の子要素を取得してスライドとして処理します。このとき、子要素が非表示(display:noneなど)かどうかは判定されず、要素が存在するかどうかで判定されます。

スライド要素の数は、Slickがドット要素を生成する時にも利用されるので、display:noneで見た目上消したスライドの分も生成されます。

問題のケースでは、「スライドを消す」というのを「スライドの表示を消す」のではなく、「スライドの要素を消す」と考えるといいと思います。

処理の流れとしては以下になります。

  1. 日付の条件判定を行う
  2. 条件に合致しない(5,15,25日でない)場合、該当のスライド要素を削除する
  3. スライダー要素にSlickを適用する

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

JavaScript

1$(function() { 2 // 1. 日付の条件判定 3 var d = new Date(); 4 var day = d.getDate(); 5 6 if(day !== 5 && day !== 15 && day !== 25){ 7 // 2. 条件に合致しない(5,15,25日でない)場合、該当のスライド要素を削除する 8 $('#special').remove(); 9 } 10 11 // 3. スライダー要素にSlickを適用する 12 $('#slider').slick(/* 省略 */) 13});

投稿2018/11/11 08:39

編集2018/11/11 08:41
NozomuIkuta

総合スコア1260

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

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

k.yyyy1101

2018/12/04 05:44 編集

ご丁寧にありがとうございます!自分では解決できなかったので助かりました
NozomuIkuta

2018/12/04 09:04

解決したようでよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問