カウントダウンタイマーをJavascriptでもって設置したのですが表示される度に定時からスタートする場合はどうやればよいのでしょうか?つまり仮に4月1日を締め切りにしてそれをすぎたら終了ではなく、常に後3日までや5日までのカウントダウンをしたいのです。言葉足らずな初心者で申し訳ないのですがよろしくお願い致します。以下現在使用のscriptです。
<SCRIPT language=JavaScript>
<!--
millenium = new Date(2007,3,31,23,59,00)
function display() {
today = new Date()
myMsec= millenium.getTime()-today.getTime();
time0 = Math.floor(myMsec/(1000*60*60*24));// カウントダウン用'日' 取得
myMsec -= (time0*(1000*60*60*24)); // 経過秒から'時'を引く
time1 = Math.floor(myMsec/(1000*60*60));// カウントダウン用 '時' 取得
myMsec -= (time1*(1000*60*60)); // 経過秒から'時'を引く
time2 = Math.floor(myMsec/(1000*60)); // カウントダウン用 '分' 取得
myMsec -= (time2*(1000*60));// 経過秒から'分'を引く
time3 = Math.floor(myMsec/1000);// カウントダウン用 '秒' 取得
myMsec -= (time3*(1000)); // 経過秒から'秒'を引く
time4 = Math.floor(myMsec/10);// カウントダウン用 '少数秒' 取得
for(i=0;i<2;i++){ time2 = '' + '0' + time2; }
for(i=0;i<2;i++){ time3 = '' + '0' + time3; }
for(i=0;i<2;i++){ time4 = '' + '0' + time4; }
time2 = time2.substring(time2.length - 2,time2.length);
time3 = time3.substring(time3.length - 2,time3.length);
time4 = time4.substring(time4.length - 2,time4.length);
time0 = time0 - 31;
if((millenium - today) > 0){
document.f.days.value = "締め切りまで"+time0+"日と"+time1+":"+time2+":"+time3+"."+time4+"です"
}else{
document.f.days.value = "受け付けは終了しました"
}
tid = setTimeout('display()', 10)
}
display()
// -->
</SCRIPT>
No.2ベストアンサー
- 回答日時:
そもそも,
最初のこれ↓がおかしくないですか?
millenium = new Date(2007,3,31,23,59,00)
おそらく,今日(2007/3/31)の23時59分にしたいのだと思うので,
こうなると思いますよ↓。
millenium = new Date(2007,2,31,23,59,00)
月は 0 から始まります。
1月は0の月,2月は1の月,…,12月は11の月です。
ですから,
今日(2007/3/31)の23時59分は,2007,2,31,23,59,00 です。
2007,3,31,23,59,00 というような変なことを書いて,
辻褄を合わせようとするので,
time0 = time0 - 31;
というさらに変なものを登場させざるを得なくなって,
締め切りが過ぎても,「受け付けは終了しました」が表示されずに,
締め切りまで-25日と6:25:20.00です
のようなマイナスの日時が表示されてしまうのだと思います。
ついでに,
time0 = time0 - 31; で,
なんとか締め切りの1秒前までは誤魔化せるのも 31 日まである月だけです。
~~~~~~~~~~~~~~~~~~
そういうことを踏まえた上で,本題です。
> 常に後3日までや5日までのカウントダウンをしたいのです。
★を付けた部分を,付け加えもしくは修正しています。
------------------------------------
<SCRIPT language=JavaScript>
<!--
today = new Date();// ★今の時刻オブジェクトを作成
d = today.getTime() + 10000*60*60*24*3;// ★3日分のミリ秒を加算
millenium = new Date(d);// ★締め切り時刻の時刻オブジェクトを作成
function display() {
today = new Date();
myMsec= millenium.getTime()-today.getTime();
time0 = Math.floor(myMsec/(1000*60*60*24));// カウントダウン用'日' 取得
myMsec -= (time0*(1000*60*60*24)); // 経過秒から'時'を引く
time1 = Math.floor(myMsec/(1000*60*60));// カウントダウン用 '時' 取得
myMsec -= (time1*(1000*60*60)); // 経過秒から'時'を引く
time2 = Math.floor(myMsec/(1000*60)); // カウントダウン用 '分' 取得
myMsec -= (time2*(1000*60));// 経過秒から'分'を引く
time3 = Math.floor(myMsec/1000);// カウントダウン用 '秒' 取得
myMsec -= (time3*(1000)); // 経過秒から'秒'を引く
time4 = Math.floor(myMsec/10);// カウントダウン用 '少数秒' 取得
for(i=0;i<2;i++){ time2 = '' + '0' + time2; }
for(i=0;i<2;i++){ time3 = '' + '0' + time3; }
for(i=0;i<2;i++){ time4 = '' + '0' + time4; }
time2 = time2.substring(time2.length - 2,time2.length);
time3 = time3.substring(time3.length - 2,time3.length);
time4 = time4.substring(time4.length - 2,time4.length);
// ★これ不要↓
// time0 = time0 - 31;
if((millenium - today) > 0){
document.f.days.value = "締め切りまで"+time0+"日と"+time1+":"+time2+":"+time3+"."+time4+"です";
}else{
document.f.days.value = "受け付けは終了しました";
}
tid = setTimeout('display()', 10);
}
display();
// -->
</SCRIPT>
------------------------------------
No.3
- 回答日時:
すみませんでした。
millenium = new Date(new Date().getTime()+1000*60*60*24*3);
こうですね。あとはNo.2さんのとおり、
time0 = time0 - 31;
が不要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ソフトウェア) OMRON PLC CP2Eのプログラム 1 2022/11/24 10:57
- 日本語 「使われている」と使い方が違うのは次のどれか 1 2022/07/11 20:08
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- 船舶・クルーズ Windows10のエクスプローラにて。 1 2022/10/10 20:11
- 電気工事士 平均照度の計算あっているか教えてください。忙しいと思いますがよろしくお願いします。 現地測定し数値を 1 2022/09/29 07:37
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- 英語 提示文のif節の用法について(senario if節) 6 2023/07/31 10:18
- 雑誌・週刊誌 12月22日頃880円で発売する予定の絶世ワールドクラスvol.9を絶対に手に入れる方法を教えてくだ 1 2022/11/25 16:46
- Excel(エクセル) エクセルについて教えてください。 1 2023/03/03 08:38
- 経済 国債をどんどん発行して、国家予算に充てれば良いという考え方が提唱されてますが…… 5 2022/10/09 19:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
Excelで勤怠管理をしたいです。...
-
VB.NETで DataRow()を利用して...
-
imgctl.dllを使って読み込んだ...
-
VBA リストボックス複数選択か...
-
VBA:小数点以下の数字を取得で...
-
自動的に高さ指定していないt...
-
エクセルVBAで複数選択できるよ...
-
DataGridView 複数選択で行番...
-
asp.netでtextboxの値を取得
-
IFRAME内のURLを取得したです。
-
ListView 項目の選択/選択解除...
-
Flexgridで選択行の列の値を取...
-
GetLongPathName関数について
-
整数の桁数が取得できません
-
Google Apps Script で、Web上...
-
利用者側のMACアドレスを取得し...
-
フォルダ一覧取得の設計について
-
リクエストからArrayListのデー...
-
ListViewで複数選択された項目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでActiveDirectoryのユーザ...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
like演算子内に変数って使えな...
-
count(*)で取得した値をJAVAの...
-
利用者側のMACアドレスを取得し...
-
データ数をカウントしたいのですが
-
JavaScriptでWindowsログオンID...
-
ListViewで複数選択された項目...
-
Flexgridで選択行の列の値を取...
-
エクセルVBAで複数選択できるよ...
-
VBA リストボックス複数選択か...
-
getParameter と getAttribut...
-
Excel VBA でログインしてい...
-
VBScriptで数値にコンマを付け...
-
Spreadの選択行の取得について
-
コンボボックスの表示は最大何行?
-
コンボボックス表示文字列を取...
-
VB .netにて現在時刻+1時間後...
おすすめ情報