選択日curDateの日にちを1日に設定してから指定されたdateの月,年に設定し,カレンダテーブルを再生成しています。最初に日にちを1日に設定しているのは,日にちによっては意図した月と異なる月になってしまう可能性があるためです。たとえば1月31日を表すDateオブジェクトに対し setMonth(1)を実行する(Dateオブジェクトは1月を0として扱うため,1は2月を表す)と,2月31日ではなく,3月3日に変更されます。このようにDateオブジェクトは存在しない日時を示さないように適切に処理する機能があるのですが,カレンダの生成処理では指定した月に応じたカレンダを表示したいので,このような月のジャンプが起こらないようにしたいわけです。そのため日にちを先に1日するようにしています。 Greasemonkeyによるアプリケーション開発:第3回 Greasemonkeyによるカレンダアプリケー
![2007-09-06](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)