• ベストアンサー

プルダウンメニュー日付生成で月の変わり目について

初心者です。 質問集をいろいろ探して日付生成できたのですが月末、月初がうまくいきません。 イヌでも・・やトホホ・・など探してますがマッチする情報が見つからないのでわかったら教えて下さい。 100にち分を表示するようにしてます。 このソースは短くてシンプルなので気に入ってます、 ======================================== <SCRIPT type="text/javascript"> window.onload = function() { var d, str, elm = document.getElementById('gdate'); var day = new Date(); day.setMilliseconds(24*60*60*1000); for (d=1; d<100; d++) { str = (day.getMonth() + 1) + '/' + (day.getDate() -1); elm.options[d] = new Option(str, str); day.setMilliseconds(24*60*60*1000); } } </SCRIPT><SELECT name="HIDUKE" id="gdate"> <OPTION>日付選択</OPTION> </SELECT> ======================================== あまり複雑にしないで解決する方法ありますか。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

元のスクリプトがなぜ『 day.getDate() -1 』にしているのか理由が思い当たりませんが… 普通に暦の日付を表示したいのなら、-1をしなければ良いだけでは? >100にち分を表示するようにしてます。 現状だと99日分ではないかと思いますが… <script type="text/javascript"> window.onload = function() { var str, d = 1, day = new Date(); var elm = document.getElementById('gdate'); while ( d < 101 ) { str = (day.getMonth() + 1) + '/' + day.getDate(); elm.options[d++] = new Option(str, str); day.setHours(24); } } </script> 1行減ったのと、ほかにも少し短くなったかも…

Naodes
質問者

お礼

非常に分かりやすくシンプルですごく良いです! ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>day.setMilliseconds(24*60*60*1000); としてるのは日付をインクリメントしてたいのでしょう・・・ 理解しないままこういう姑息なことをすると結局手動で デクリメントが必要になって、日付が0になったり月末日が 拾えなかったりします。 素直に日付のインクリメントは今日の日付に1たしましょう <SCRIPT> window.onload = function() { var d, str, elm = document.getElementById('gdate'); var day = new Date(); for (d=1; d<100; d++) { str = (day.getMonth() + 1).toString() + '/' + day.getDate().toString(); var op=document.createElement("option"); op.setAttribute("value",str); op.appendChild(document.createTextNode(str)); elm.appendChild(op); day.setDate(day.getDate()+1); } } </SCRIPT> <SELECT name="HIDUKE" id="gdate"> <OPTION>日付選択</OPTION> </SELECT>

noname#111181
noname#111181
回答No.1

本当に小さなミスです。 下記の通り1行修正して下さい。 ------------------------------- str = (day.getMonth() + 1) + '/' + (day.getDate() -1);  ↓ str = (day.getMonth() + 1) + '/' + day.getDate();

Naodes
質問者

お礼

ありがとうございました。 -1 を付けたのは今日の日付が出ないので荒業を使った事が原因だったんですね。