イヌでもわかるJavaScript講座
|
Step.23 - 月間カレンダーに挑戦2
|
月間カレンダー表が出来上がったら、先月と来月もほしくなってきました。(^^; |
Step テーマ ● setMonth 月を変更する |
実行例 |
リスト
|
サンプルだけの HTMLは こちらへ |
説明今回はカレンダーを3つ表示するので、関数化します。 ただ、いつものような関数にすると同じ月(今月)が3つ表示されてしまいます。 ならば、どの月を表示するかパラメータを指定できるようにしてみましょう。 今回は myCalendar( myTodayOffset ) という関数にします。 パラメータには、今月からの 月のオフセットを指定します。 今月であれば 0、来月であれば 1、再来月であれば 2、・・、先月であれば -1、先先月であれば -2、・・、といった感じです。 myDate = new Date(); myMonth = myDate.getMonth(); myMonth = myMonth + myTodayOffset; myDate.setMonth(myMonth); 今日の日付情報を取得して、月にパラメータのオフセットを加算/減算して、setMonth() にて、指定月に変更します。 setMonth( 月 ) と指定すれば、その月の日付情報になります。getMonth() 同様に月は 0月~11月で指定します。 setMonth() は 0~11 以外の数値をセットした場合は、例えば、-1 を指定した場合は、去年の12月になります(年も変わってくれます)。 しかし、例えば、今日が 5月31日だった場合、myDate.setMonth(3) のように月を変更すると、 4月は30日までしかないので、4月31日→5月1日に修正してくれます。 これでは都合が悪いので 月を変更する前に 日 を 1日に変更しています。 myDate.setDate(1); myMonth = myMonth + myTodayOffset; myDate.setMonth(myMonth); 前回の Step のサンプルでは、今日を水色に変更していました。 if ( myDat == myToday ){ このままだと、すべての月の「今日」が水色になってしまうので、 if ( myDat == myToday && myTodayOffset == 0 ){ のように、パラメータの値が 0、つまり、今月のみの条件を追加しています。 あと、前回の Step では、気を利かして、行数を計算しました。 しかし、今回は3ヶ月分表示するので、月によって行が変わるとバランスが悪くなります。 今回は行数計算を省いて、6行固定にしました。 これで、変更終了です。 参考ステップ Step.21 TABLEタグを JavaScriptで作成してみましょう Step.22 月間カレンダーに挑戦してみましょう |