dポイントプレゼントキャンペーン実施中!

javascriptにて画像でカウントダウン表示しようとしています。

下記の質問を参考にしましたが、その当日を過ぎると、カウントアップしてしまいます。
03・02・01・00・01・02・・・
       ↑
      当日

指定日まで画像カウントダウン表示一桁の残り日数を「01」のようにしたい
http://oshiete.goo.ne.jp/qa/5901649.html

下記の記述で誤っているところあれば教えて頂きたいのですがわかりますでしょうか?
<SCRIPT LANGUAGE="JavaScript">
<!--
dir = "number_sss2012/";
date1 = new Date();
date2 = new Date(2012, 8, 19); // YYYY, MM - 1, DD

d = (date2.getTime() - date1.getTime()) / (24 * 60 * 60 * 1000);
d = Math.abs(Math.ceil(d));
s = d.toString();

for (i = 0; i < s.length; i++)
{
if ( d < 0 ) {
s = "00";
}
else {
s = d.toString();
if ( d < 10 ) s = "0"+s;
}
document.write("<IMG SRC=\"" + dir + s.charAt(i) + ".png\">");

}
//
-->
</SCRIPT>

A 回答 (1件)

>その当日を過ぎると、カウントアップしてしまいます。


計算方法として指定日と今日で日数の引き算をしているので、指定日を過ぎるとマイナスの日数になるのですが…
 d = Math.abs(Math.ceil(d));
の部分で絶対値をとる様になっているので、わざわざ-1日を1日に変えてしまっているのが原因ではないですか?
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!

ご指摘の部分を下記に変更してみたところうまく動くようになりました。

d = Math.floor(Math.ceil(d));

また、こちらでも同様に動作しました。
d = Math.ceil(Math.ceil(d));

なお、ご指摘の部分をまるっと削除すると動作はしませんでした。
整数化すると動作し始めました。
整数になるなら、切捨てでも切り上げでも関係はないのですかね。
どっちみち日付の計算で小数点が出ることはないですものね。

これで正しいか分らないのですが、きちんと動作するようですので
これで行きたいと思います。

とても勉強になりました。
助かりました!!

お礼日時:2012/09/21 11:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!