关于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 相关文章推荐
jquery 入门教程 [翻译] 推荐
Aug 17 Javascript
Javascript 自定义类型方法小结
Mar 02 Javascript
js与jquery实时监听输入框值的oninput与onpropertychange方法
Feb 05 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
JavaScript字符串对象
Jan 14 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
Aug 23 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
Aug 14 Javascript
前端JS获取URL参数的4种方法总结
Apr 05 Javascript
微信小程序 WeUI扩展组件库的入门教程
Apr 21 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
IStream与TStream之间的相互转换
2008/08/01 PHP
asp 的 分词实现代码
2007/05/24 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
在Django框架中运行Python应用全攻略
2015/07/17 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
实现Python与STM32通信方式
2019/12/18 Python
Python中使用filter过滤列表的一个小技巧分享
2020/05/02 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
La Senza官网:北美顶尖性感内衣品牌
2018/08/03 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
优秀企业获奖感言
2014/02/01 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
离婚案件被告代理词
2015/05/23 职场文书
心得体会格式及范文
2016/01/25 职场文书
创业计划之特色精品店
2019/08/12 职场文书