DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> 關於javascript中的parseInt使用技巧
關於javascript中的parseInt使用技巧
編輯:JavaScript基礎知識     
要對表單中填寫的日期格式進行客戶端驗證,於是在網上找了段代碼,其中用到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);就能轉換正確了
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved