关于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 相关文章推荐
datagrid框架的删除添加与修改
Apr 08 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
JQuery性能优化的几点建议
May 14 Javascript
Jquery 实现图片轮换
Jan 28 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
Aug 21 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
Mar 31 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
Apr 25 jQuery
javaScript实现复选框全选反选事件详解
Nov 20 Javascript
如何从零开始利用js手写一个Promise库详解
Apr 19 Javascript
js for终止循环 跳出多层循环
Oct 04 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
Jun 08 Javascript
JavaScript经典案例之简易计算器
Aug 24 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
php简单的上传类分享
2016/05/15 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
Jquery封装tab自动切换效果的具体实现
2013/07/13 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
判断数组的最佳方法(推荐)
2016/10/11 Javascript
原生js实现手风琴功能(支持横纵向调用)
2017/01/13 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
Python的Django框架使用入门指引
2015/04/15 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python中的多行注释文档编写风格汇总
2016/06/16 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
python多线程高级锁condition简单用法示例
2019/11/07 Python
Python有参函数使用代码实例
2020/01/06 Python
Python如何实现在字符串里嵌入双引号或者单引号
2020/03/02 Python
python实现超级马里奥
2020/03/18 Python
python实现mean-shift聚类算法
2020/06/10 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
一篇文章带你学习CSS3图片边框
2020/11/04 HTML / CSS
世界经理人咨询有限公司面试
2014/09/23 面试题
社区消防工作实施方案
2014/03/21 职场文书
yy司仪主持词
2014/03/22 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
秋收起义观后感
2015/06/11 职场文书
奠基仪式致辞
2015/07/30 职场文书
人身损害赔偿协议书
2016/03/22 职场文书