關於javascript中的parseInt提示

來源:互聯網
上載者:User

要對錶單中填寫的日期格式進行用戶端驗證,於是在網上找了段代碼,其中用到parseInt對年月日做判斷,其中有類似這樣的語句:

......

else if(parseInt(month)<1 || parseInt(month) >12)

......

可是對於當前本來正確的日期,這裡怎麼也通不過。後來一查才明白,parseInt實際上有兩個參數,第一個是要轉換的值,第二個是指定的進位。如果不指定第二個參數,那麼它只能正確地轉換01到07(即把它們轉換成1到7),從08開始,它就會按照“0開頭的是八位元”的規則轉換了!正好現在是9月,我隨手選的日期,正好暴露了這個問題,我要是在上半年做這個,還真是將留下一個BUG,然後等到下半年客戶才告訴我日期無法填寫了。

於是,將函數中所有用到parseInt的地方,都加上了第二個參數,指明是十進位。比如上面那句,改成:

......

else if(parseInt(month,10)<1 || parseInt(month,10) >12)

......

前面好幾次遇到JavaScript中parseInt函數把字串轉為數字,前面遇到過幾次問題,然後就換其它方法進行比較。
當我去頁面取得一個日曆的東西,然後進行轉換成數字進行比較 的時候,月份轉換老是出現問題,
當我用

var num = parseInt(01);
var num = parseInt(01);
...
var num = parseInt(07);
var num = parseInt(08);
var num = parseInt(09);
var num = parseInt(10);

假如當我進行如上轉換的時候,
parseInt(),傳進去的參數從1到7都沒有問題,可是當我用parseInt(08)的時候就出問題,轉換出來的num=0

當時因為項目的緊急的原因,也沒有細細的去追究
現在有空了看了一下parseInt這個javascript方法

javascript 的api的說明如下:
parseInt 方法
返回由字串轉換得到的整數。
parseInt(numString, [radix])
參數
numString
必選項。要轉換為數位字串。
radix
可選項。在 2 和 36 之間的表示 numString 所儲存數位進位的值。如果沒有提供,則首碼為 '0x' 的字串被當作十六進位,首碼為 '0' 的字串被當作八進位。所有其它字串都被當作是十進位的。

看了如上的api知道了,原來我轉進去的參數為01到08時,參數以'0'開頭,所以轉換成了八進位。又因為八進位是只能表示0到7所以,當我參數為01到07時轉換正確,當為08時就進位了,轉換為0.而parseInt(10)又能正解轉換為10

所以規矩的做法是不要省略最後一個參數,

用parseInt(08,10);就能轉換正確了

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.