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

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

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

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

jQuery

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

Q&A

解決済

2回答

2012閲覧

カレンダーライブラリ flatpickr の onDayCreateイベントについて

van-0215

総合スコア89

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/09/29 15:10

JavaScriptでカレンダーUIのライブラリである flatpickrを用いてカレンダーを作成しています。

flatpickr

そこで flatpickrのイベントに 下記のような onDayCreateイベントがありました。

javascript

1onDayCreate: function (dObj, dStr, fp, dayElem) { 2 // dummy logic 3 if (Math.random() < 0.15) 4 dayElem.innerHTML += "<span class='event'></span>"; 5 else if (Math.random() > 0.85) 6 dayElem.innerHTML += "<span class='event busy'></span>"; 7}

このイベントのやっていることを想像するに dayElemというのが カレンダーの日付DOMだと想定ができます。
そして、それらにclassを付与することで色をつけているのだと思います。

そこで質問です。
例えば、2018年10月1日の日付(カレンダー上の)のみを赤色背景にしたいします。

そのような時にどのようなコードを書けば良いのでしょうか?

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

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

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

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

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

guest

回答2

0

それらにclassを付与することで色をつけているのだと思います。

いえ、日付のDOMの内側に新たなDOM(span)を追加することで色付け(というより下の小さい丸)をつけています。


例えば、2018年10月1日の日付(カレンダー上の)のみを赤色背景にしたいします。

そのような時にどのようなコードを書けば良いのでしょうか? 

試しながらやっていただきたいので、とりあえず方向性+ヒントを。
ご希望の動作を行う場合、以下のように処理を分けて考えます。

  • 2018年10月1日の日付だけ扱うにはどうするか
  • 日付の背景色を変えるにはどうするのか

2018年10月1日の日付だけ抽出するにはどうするか

onDayCreate()には4つ引数があります。

  • dObj
  • dStr
  • fp
  • dayElem

この中から日付の比較に適しているものを探し、分岐させればよいでしょう。

それぞれ何を表しているかは公式ページなどを参考にするか、
onDayCreate()が呼ばれたタイミングでconsole.log()やconsole.dir()などで
出力を確認してみるとわかりやすいですね。

例:

javascript

1console.log(dObJ); 2console.dir(dayElem);

日付の背景色を変えるにはどうするのか

こちらは取得した日付のDOMにbackground-colorのstyleを当てればよいですね。
DOMにstyleを与える方法はいくつかありますが、代表的なのをあげておきます。

  • JavaScriptでDOMにstyleを追加(参考
  • あらかじめCSSで特定のクラスを追加しておき、JavaScriptでDOMにクラスを追加する(参考

お好きな方を、もしくは調べてみて合ったものをやってみるとよいでしょう。


わからない点は聞いていただきたく思いますが、とりあえずやってみることをお勧めします。
(やらずに「方法を教えてくれ」は丸投げととらえられてしまいますのでご注意を。)

投稿2018/09/29 15:46

dice142

総合スコア5158

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

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

0

ベストアンサー

こんにちは。

onDayCreate の引数 dayElemdateObjプロパティに Dateオブジェクトが入ってますので、これを指定の日付と等しいかを判定し、等しければスタイルを変更します。以下、コード例を示します。

javascript

1const config = { 2 onDayCreate: function(dObj, dStr, fp, dayElem){ 3 if (moment(dayElem.dateObj).isSame('2018-10-01')) { 4 dayElem.style.backgroundColor = 'red'; 5 } 6 } 7}; 8 9flatpickr('.flatpickr', config);

上記のコードを使ったサンプルを、以下に上げましたのでお試しください。

なお、 dayElem.dateObj の日付が、特定の日付(2018年10月1日)に等しいかどうかの判定に

を使っています。

参考になれば幸いです。

投稿2018/09/30 02:40

編集2018/09/30 07:09
jun68ykt

総合スコア9058

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

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

dice142

2018/09/30 12:01

試してないので推測なのですが、そもそも引数`dObj`が`Date`オブジェクトではないですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問