javascript で "08" "09" を parseInt に渡すと Android では 0 が返る問題
解決方法
parseInt に基数を指定する。
parseInt( '08', 10 );
Number 関数を利用する。
Number( '08' );
背景
PCブラウザ、iPhone のサファリでは問題なかったのに、
Android の標準ブラウザでだけは、'08' や '09' を parseInt した結果が 0 になってしまっていた。
Why Javascript Returns Zero For parseInt('08') and parseInt('09')? | Ventanazul によると、
parseInt では頭に「0」がつくと、8進数と解釈するらしい。
08 や 09 という表現は8進数では存在しないので、0が返るという。
なので、parseInt に基数を指定するか、あるいは Number 関数を使えば、期待する値が返ってくる。
実際の動作はこちらで確認できます:[js] parseInt, Number の比較 - jsdo.it - Share JavaScript, HTML5 and CSS
アンドロイド端末でアクセスすれば、parseInt の結果が 0 になるはず。
なぜ android だけこうなるのかはよくわからない・・・。
js のバージョンの違いかと思って javascript version in Android - Stack Overflow を
参考にしてみたけど、そういうわけでもないようです。