結構無意味な投稿カレンダーの実装を解説していきます。
サニタライズの関連で日記にスクリプトは貼れないのでサイト左上のカレンダーを見てください。
今回は大まかの処理の流れを解説します。
○InitCalender()
◇表示先の要素を取得し、グローバル変数に格納します。
◇Dateオブジェクトから現在の日付を取得し、グローバル変数に格納します。
○LoadCaleder()
◇グローバル変数から現在の日付を取得し LoadCalender2()関数に渡します。
○LoadCalender2()
◇渡された日付から、月別アーカイブのURLを生成します。
◇XmlHttpRequestオブジェクトで月別アーカイブのHTMLを非同期取得し、コールバック関数 CalenderCallBack() を呼び出します。
○CalenderCallBack()
◇カレンダーのヘッダ部分(現在の年月+年月遷移リンク+曜日ヘッダ)を生成します。
◇渡された年月の始まる曜日と日数を取得します。
◇曜日の分だけ空白セルを出力します。
◇日付と曜日をインクリメントしながら
◇土曜日+1ならば改行し曜日をリセット
◇正規表現でその日のエントリがあればそのタイトルを取得し日別アーカイブへのリンクセルを生成。
◇なければ数字セルを生成。
◇カレンダーのフッタ部分を生成。
◇HTMLを渡された要素に設定。
といったとこです。
スクリプトは若干修正した後次回以降に公開します。