• 締切済み

日付のループ

お世話になります。 予定表をHTMLで作成したいのですが、 コンボボックスで月(1~12)を選択して、日付を 列方向に罫線と一緒にバサっと表示させるようなことを やりたいです。 Javascritで<TD>タグを変数に格納しておいて、月から 日付のMAX値を取得して、その分をループさせる…と理屈は なんとなく解るのですが、根本的に書き方がわかりません。 どなたか、ご教授頂けないでしょうか?

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ <TD>タグとあるので、罫線は<table>で表してみます。 ・ 初期値を今月とします。 -------------------------------------------------------------------------------- <html> <head> <title>calendar</title> <script language="JavaScript" type="text/javascript"> <!-- function setDateTBL(n) { if (typeof n != "number") n = document.getElementById("selmonth").value; if (n=="月" || n==null) return var tbl=showDates(n); //alert(tbl); document.getElementById("tbl").innerHTML = tbl; return; } function showDates(n) { var monthdays=new Array (31,28,31,30,31,30,31,31,30,31,30,31); var year, today; var date=new Date(); date.setMonth(eval(n)-1); year=date.getFullYear(); // うるう年の設定 if(((year%4==0)&&(year%100!=0))||(year%400==0)){ monthdays[1]=29; } days31=monthdays[date.getMonth()]; // 年・月表示 var tbl=""; tbl += "<table border='1' align='center'>"; tbl += "<tr><th colspan='2'>"; tbl += year + "年" + (date.getMonth()+1) + "月"; tbl += "</th></tr>"; // 日にちの表示 for(i=1;i<=days31;i++){ tbl += "<tr>"; tbl += "<td align='right'>"; tbl += i; tbl += "</td>"; tbl += "<td width='200'>"; tbl += "</td>"; tbl += "</tr>"; } tbl += "</table>"; return tbl; } window.onload = function() { var mm = new Date().getMonth()+1; document.getElementById("selmonth").selectedIndex = mm; setDateTBL(mm); } //--> </script> </head> <body> <h3> カレンダー </h3> <select id="selmonth" onchange="setDateTBL()"> <option value="月">月</option> <option value="1">1</option> <option value="2" selected>2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <hr /> <div id="tbl"></div> </body> </html>

jp000
質問者

補足

>autyさん 何度もご教授して頂き、ありがとうございます。 ところで質問なのですが、 var monthdays=new Array (31,28,31,30,31,30,31,31,30,31,30,31); 上記、日数の配列は最初にセッティングする方法しか ないのでしょうか? 汎用的に使えるよう関数で出したいのですが可能ですか? また、現在行方向(下方向)に表示されていますが、これを 列方向(右方向)に表示させたい場合は、どうすればいいの でしょうか? 宜しくお願い致します。

関連するQ&A