关于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 相关文章推荐
javascript下查找父节点的简单方法
Aug 13 Javascript
myeclipse安装jQuery插件的方法
Mar 29 Javascript
Jquery带搜索框的下拉菜单
May 06 Javascript
JS嵌套函数调用上下文的问题解决
Mar 26 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
Sep 19 Javascript
JavaScript中日常收集常见的10种错误(推荐)
Jan 08 Javascript
JavaScript实现滑动导航栏效果
Aug 30 Javascript
浅谈vue2 单页面如何设置网页title
Nov 08 Javascript
微信小程序实现左滑修改、删除功能
Oct 19 Javascript
如何在postman中添加cookie信息步骤解析
Jun 30 Javascript
vue监听dom大小改变案例
Jul 29 Javascript
nestjs返回给前端数据格式的封装实现
Feb 22 Javascript
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
多重?l件?合查?(一)
2006/10/09 PHP
isset和empty的区别
2007/01/15 PHP
php mssql 时间格式问题
2009/01/13 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
jQuery AjaxQueue改进步骤
2011/10/06 Javascript
详解js闭包
2014/09/02 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
JavaScript代码复用模式详解
2014/11/07 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
Angular2学习教程之组件中的DOM操作详解
2017/05/28 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
技术合作协议书范本
2014/04/18 职场文书
庆六一活动总结
2014/08/29 职场文书
岳庙导游词
2015/02/04 职场文书
总经理检讨书范文
2015/02/16 职场文书
学习委员竞选稿
2015/11/20 职场文书