......

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

......

可是對于當前本來正 " /> 久久久久久婷,国产剧情av麻豆香蕉精品,美女精品导航

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

關于javascript中的parseInt使用技巧

要對表單中填寫的日期格式進行客戶端驗證,于是在網上找了段代碼,其中用到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);就能轉換正確了

JavaScript技術關于javascript中的parseInt使用技巧,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 澜沧| 万安县| 昆山市| 曲阳县| 和硕县| 同江市| 夏河县| 阜阳市| 汾阳市| 辽阳县| 台北市| 江口县| 武穴市| 镇坪县| 濮阳县| 叙永县| 长武县| 乌拉特中旗| 黑水县| 东至县| 汉川市| 区。| 淮南市| 常熟市| 建阳市| 大连市| 治多县| 陆良县| 龙岩市| 正定县| 望城县| 宝鸡市| 婺源县| 天柱县| 海原县| 乌兰浩特市| 渑池县| 左贡县| 多伦县| 定远县| 兴和县|