关于javascript中的parseInt使用技巧


Posted in Javascript onSeptember 03, 2009

要对表单中填写的日期格式进行客户端验证,于是在网上找了段代码,其中用到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 相关文章推荐
JS 建立对象的方法
Apr 21 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
js+jquery实现图片裁剪功能
Jan 02 Javascript
分享jQuery封装好的一些常用操作
Jul 28 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
Google 地图事件实例讲解
Aug 06 Javascript
基于node.js依赖express解析post请求四种数据格式
Feb 13 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
jquery判断单个复选框是否被选中的代码
Sep 03 #Javascript
javascript 触发事件列表 比较不错
Sep 03 #Javascript
javascript concat数组累加 示例
Sep 03 #Javascript
ie focus bug 解决方法
Sep 03 #Javascript
javascript 24小时弹出一次的代码(利用cookies)
Sep 03 #Javascript
使用jQuery的ajax功能实现的RSS Reader 代码
Sep 03 #Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
Sep 03 #Javascript
You might like
Protoss魔法科技
2020/03/14 星际争霸
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
php对大文件进行读取操作的实现代码
2013/01/23 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
2014/09/09 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
Bootstrap入门书籍之(一)排版
2016/02/17 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
Python对wav文件的重采样实例
2020/02/25 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
高三语文教学反思
2014/01/15 职场文书
简单租房协议书
2014/04/09 职场文书
创卫工作总结2015
2015/04/22 职场文书