国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

關于javascript中的parseInt使用技巧

2024-05-06 14:14:10
字體:
來源:轉載
供稿:網友
要對表單中填寫的日期格式進行客戶端驗證,于是在網上找了段代碼,其中用到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);就能轉換正確了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 库伦旗| 册亨县| 随州市| 天门市| 砚山县| 浏阳市| 镇原县| 大渡口区| 内江市| 甘谷县| 抚州市| 琼中| 吐鲁番市| 无棣县| 镇巴县| 道真| 志丹县| 津南区| 三江| 三门县| 长葛市| 伊川县| 屯留县| 七台河市| 蒙城县| SHOW| 年辖:市辖区| 平度市| 甘孜| 韶山市| 如东县| 米林县| 永新县| 察隅县| 扎赉特旗| 寻乌县| 讷河市| 中阳县| 中方县| 如东县| 德钦县|