关于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技巧
Dec 06 Javascript
JQuery 技巧和窍门整理(8个)
Apr 22 Javascript
基于jQuery的获取标签名的代码
Jul 16 Javascript
javascript禁用键盘功能键让右击及其他键无效
Oct 09 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
Jan 23 Javascript
最新Javascript程序员面试试题和解题方法
Nov 23 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
Mar 13 Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 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
十天学会php之第四天
2006/10/09 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
php redis setnx分布式锁简单原理解析
2020/10/23 PHP
Highslide.js是一款基于js实现的网页中图片展示插件
2020/03/30 Javascript
JavaScript 事件参考手册
2008/12/24 Javascript
Javascript valueOf 使用方法
2008/12/28 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JavaScript变量的作用域全解析
2015/08/14 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
Angular(5.2-&gt;6.1)升级小结
2018/12/27 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
python numpy元素的区间查找方法
2018/11/14 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
Python with语句和过程抽取思想
2019/12/23 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
利用python汇总统计多张Excel
2020/09/22 Python
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题