前回のここでの質問で、以下のようなスクリプトをいただきました。
文字制限があったため、コメント欄に表示しています。
(ユーザに日付を入力してもらいクッキーで保存するタイプ)
今回はさらにもう少し使い勝手をよくしたいと思っています。
欲しい追加箇所は次の2点です。
①当日とカウントアップの表示を今のものと別にしたい。
こんな感じ↓
http://www.ookawa.com/soft/hp/countdown/countdown.html
②カウントダウン日数によって表示を追記したい。
現在の「YYYY/M/Dまで*日です。」のあとに、
例えば1~10日以内になれば、「YYYY/M/Dまで*日です。」「もうすぐです。」
20~30日以内であれば、「YYYY/M/Dまで*日です。」「近づいてきました。」
30日後であれば、「YYYY/M/Dから*日です。」「1ヶ月が経過しました。」
という感じです。
当方の知識相応の質問ではありませんが、
どうぞよろしくお願いいたします。
Mars さんのコードをベースにしましたが、 countdownMsg の部分を下記に書き換えれば、
そのようになると思いますが、いかがでしょうか。
function countdownMsg(dt){ var mdt=new Date(dt); var dfDay = diffDay(dt); if ( dfDay == 0 ) { return "<<<当日のメッセージ>>>"; } var message; if ( dfDay > 0 ) { message = mdt.getFullYear() + '/' + ( mdt.getMonth() + 1 ) + '/' + mdt.getDate() + 'まで' + dfDay + '日です。'; if ( dfDay <= 10 ) { message += "もうすぐです。"; } else if ( dfDay <= 30 ) { message += "近づいてきました。"; } } else { message = mdt.getFullYear() + '/' + ( mdt.getMonth() + 1 ) + '/' + mdt.getDate() + 'から' + Math.abs( dfDay ) + '日です。'; if ( dfDay <= -30 ) message += Math.floor( dfDay / -30 ) + "ヶ月が経過しました。"; } return message; }
Mookさま、的確なコードをありがとうございます。
動作確認もいたしましたがバッチリでした。
もし下の表示箇所に初期設定で文字を表示させる場合、
例えば
「YYYY/M/Dに半角数字を記入、例(2009/9/9)」
と、表示させたい場合はどうすればいいのでしょうか?
<input type="text" id="countdownDate" sie="10" style="display:none">
また参考までに、
追記表示に以下のようなプログラムを作りたいときには、どうなるのでしょう?
カウントダウン当日 社長になりました
~10日前 専務になり*日です。(10で割れずに余りだけを表示)
10日前 専務になり0日です。( dfDay / 10 )が1で、余りが0です)
10~20日前 部長になり*日です。 ( dfDay / 10 )が1で、余りを*日に表示。
20日前 部長になり0日です。( dfDay / 10 )が2で、余りが0です)
20~30日前 課長になり*日です。 ( dfDay / 10 )が2で、余りを*日に表示。
30日前 課長になり0日です。( dfDay / 10 )が3で、余りが0です)
0日が存在します。
便乗で質問ですが、よろしくお願いいたします。