index

2007年 8月
      1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
  20 21 22 23 24 25 26
27 28 29 30 31    
2007年 9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
2007年 10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
  29 30 31        

アレ

Calendar_Date_Select   ▽20070909b #プログラミング #JavaScript

calendar_date_select とゆー Google 傘下のプロジェクトによるライブラリがありまして.

詳しくは Demo を見ると一目瞭然なのだけど, 要はフォームの日付入力にポップアップカレンダによる選択を可能とするブツだ.

ちょっとしたカスタマイズでけっこう便利に使えるのだけど, これいじってたら何か「today_cell has no property」とかエラー出た.

エラー箇所を探っていたら……


    if (this.today_cell) this.today_cell.removeClassName("today");
    
    if ( $R(0,42).include(days_until = this.beginning_date.daysDistance(today)) ) {
      this.today_cell = this.calendar_day_grid[days_until];
      this.today_cell.addClassName("today");
    }

という箇所を発見. 7曜日 * 6週間 = 42日の表の中に「今日」が含まれていたら専用マーキングを付ける, という処理なんだけど…… $R(0,42) だと,0~42 つまり 43個の範囲を示してしまうわけで, 42日の表には 0~41 つまり 42個のセルしか存在しないわけで, 番号 42 のセルを触りに行ったらエラーになっちゃうよなぁ.

これを一般語で言い換えると,ある月の1日を含む週から日曜オリジンで数えて 7週間目の日曜日に「ある月」のカレンダを表示させるとエラーになる. 今年の 8月でいうと,7月 29日からの週が 1週間目,8月 26日の週が 5週間目,9月 2日の週が 6週間目で 9月 9日つまり今日が「7週間目の日曜日」. 来月でいうと 10月 7日にエラーが出るはず.

とりあえず 41 にしたらエラーは出なくなった.いいのかこれで? 原作者に伝えたいが,どっかルートあるかな…… 英語苦手なんでもーちっと時間できたら作者にメールでも送るかな. 今日エラーが出るんだから誰かが気づきそうなもんだけどw

index