人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascriptでカウントダウンを作っています。
前回のここでの質問で、以下のようなスクリプトをいただきました。
文字制限があったため、コメント欄に表示しています。
(ユーザに日付を入力してもらいクッキーで保存するタイプ)

今回はさらにもう少し使い勝手をよくしたいと思っています。
欲しい追加箇所は次の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ヶ月が経過しました。」
という感じです。

当方の知識相応の質問ではありませんが、
どうぞよろしくお願いいたします。


●質問者: tontonpokopoko
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:JavaScript カウントアップ カウントダウン クッキー コメント欄
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

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日が存在します。

便乗で質問ですが、よろしくお願いいたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ