モンスターカレンダー

« 2012年1月 
12345678910111213141516171819202122232425262728293031

2012年1月12日アーカイブ

小人じゃなくてjavascriptの仕様

私のPCには小人が住んでいるかもと真剣に思う今日この頃。

今日もまた小人のせいかと思ったら、javascriptの仕様だったというお話。

日付入力欄に入力補助用のカレンダーを表示させ、入力欄とカレンダーが連動して動く処理をjavascriptで記述しました。

「できた!」と思って動作確認をしたら、なぜかカレンダー表示が前月の最終日に戻ってしまう場合があるんです。

よくよく確認してみると、8日,9日だけセットする日の値が0になっています。

絶対に小人の仕業にちがいないと確信しましたが、念のため調べてみました。

ネットで調べたら、同じような境遇の人が多数いました。

原因はjavascriptでは先頭に「0」が付いた数値は8進数と見なされるため。

日付が1桁の場合、「01」のように先頭ゼロ埋めになっており、parseInt関数でその日付が数値かどうかのチェックを行っていたため、8進数に存在しない08、09では0が返ってきていました。

parseInt関数の第2引数に何進数でチェックするかを設定できるので、そこで10進数であると設定してあげることで8日、9日でも正しく動作するようになりました。

javascriptでは先頭ゼロ埋めに要注意です。

o

MT42BlogBetaInner

ウェブページ

最近のブログ記事

最近のコメント

タグクラウド

MovableType(MT)テンプレート 無料(フリー)
Powered by Movable Type 4.25