Javascript中使用parseInt函数需要注意的问题

2014-03-17  来源:本站原创  分类:javascript技巧  人气:1 

这篇文章主要介绍了Javascript中使用parseInt函数需要注意的问题,本文讲解了parseInt函数在IE8下可能会返回0值的兼容问题解决方法,需要的朋友可以参考下

  前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效期判断,为了不必要的麻烦,就是判断过期时间一定不能在一个月内,由于输入的年月日在三个文本框中,再加上我嫌转成时间麻烦,就索性直接拿年,月,日的文本内容直接强转成int类型来判断,此为背景。

Javascript中使用parseInt函数需要注意的问题

  说了这么多,终于说到文章主题了,我们知道有效期有这样的:2015-09-20,我就毫不犹豫的从月文本框中拿出了"09",然后屁颠屁颠的在chrome下做了如下转换,很开心,搞定。

Javascript中使用parseInt函数需要注意的问题

  下午测试小妹妹反馈过来说,信用卡有效期判断有问题,比较诧异,在自己机器上怎么试都没有问题,然后没辙,只能亲自去小妹妹桌上看看,顺便搽点油,开着IE调试器调试了下,果然,灵异事件发生了,现在终于找到问题所在了。

Javascript中使用parseInt函数需要注意的问题

  当时测试小妹妹装的是IE8,然后在IE8下面parseint默认会把我的“09”当成八进制,但是又发现不是合法的八进制,最后就抛出了0这个false,我们也看到在chrome下,“09”会默认当做十进制来看的,所以js引擎会理所当然的转化成了9这个我满意的结果,所以嘛,IE真的是不按照人的常理出牌,现在我们该如果解决呢?

一:解决方案

<1> 刚才讨论中也发现了,parseInt在不同的浏览器下有不同的默认行为处理,没辙,又看不到parseint底层是怎么处理的,只能去找javascript的api文档这个黑盒去看一看,然后就发现一个让我很惊喜的radix参数。Javascript中使用parseInt函数需要注意的问题

知道了这个radix,问题就可以迎刃而解了,现在我只需指定下radix=10即可,如图:

Javascript中使用parseInt函数需要注意的问题

不过后来发现在IE9下面,parseint在缺失radix的时候底层也是默认采用十进制的,终于微软为了符合大众口味做了正确的修改。Javascript中使用parseInt函数需要注意的问题

<2>除了parseint这个函数,其实还有一个Number函数也可以帮你解决这个问题,并且在IE7,8上面都是没有问题的,由于在js中,如果你去new 一下这个Number的话,那就可以生成Number对象了,这一点和C#有一些区别,所以下面我可以用两种方式看一下。

Javascript中使用parseInt函数需要注意的问题

这个Number的好处在于只会处理十进制数值,而且还有其他特殊的玩法,不像parseint只接受string的参数,number可以接受任何类型,比如:

Javascript中使用parseInt函数需要注意的问题

由于看不到Number底层的源码,所以针对这些问题,我们也只能道听途说来记住了,这也是JS与其他托管语言不一样的地方。

相关文章
  • Javascript中使用parseInt函数需要注意的问题 2014-03-17

    这篇文章主要介绍了Javascript中使用parseInt函数需要注意的问题,本文讲解了parseInt函数在IE8下可能会返回0值的兼容问题解决方法,需要的朋友可以参考下 前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效期判断,为了不必要的麻烦,就是判断过期时间一定不能在一个月内,由于输入的年月日在三个文本框中,再加上我嫌转成时间麻烦,就索性直

  • JavaScript中使用stopPropagation函数停止事件传播例子 2014-02-05

    这篇文章主要介绍了JavaScript中使用stopPropagation函数停止事件传播例子,即阻止事件冒泡的一个方法,需要的朋友可以参考下 JS中的事件默认是冒泡方式,逐层往上传播,可以通过stopPropagation()函数停止事件在DOM层次中的传播.如以下例子: HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>stopPro

  • JavaScript中的alert()函数使用技巧详解 2014-06-20

    这篇文章主要介绍了JavaScript中的alert()函数使用技巧详解,本文讲解了普通弹出.带换行的文本.使用制表符.使用变量.使用样式等选择,需要的朋友可以参考下 在JavaScript代码中,可以使用window对象的alert()函数来显示一段文本,从而进行程序的调试,或者向用户警示相关信息: //Use window object's alert() function window.alert("sample text"); 这一写法可以简化为直接使用alert()函数: 复

  • jQuery中的read和JavaScript中的onload函数的区别 2014-07-03

    这篇文章主要介绍了jQuery中的read和JavaScript中的onload函数的区别,这两个函数在web编程中是最常用的,一定要搞清楚它们的区别,需要的朋友可以参考下 在JavaScript中,onload函数是最经常使用的,几乎涉及到JavaScript的童鞋都少不了要接触它.这个函数的作用就是等待网页完全装载完了以后再去执行代码块内的语句,因为按照文档流的执行顺序,通常用于头部加载JavaScript的时候需要用到. window.onload = function(){ // 当网页

  • 深入认识javascript中的eval函数 2014-07-18

    发现为本文起一个合适的标题还不是那么容易,呵呵,所以在此先说明下本文的两个目的. 1)介绍javascript中的eval函数的用法 (2)如何在函数内执行全局代码 ►先来说eval的用法,内容比较简单,熟悉的可以跳过. eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要特别注意的是对象声明语法"{}"并不能返回一个值,需要用括号括起来才会返回值,简单示例如下: var code1='&

  • JavaScript中字符串分割函数split用法实例 2014-09-03

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaScript中字符串分割函数split用法.分享给大家供大家参考.具体如下: 先来看下面这段代码: <script type="text/javascript"> var str="How are you doing today?" document.write

  • JavaScript中的eval()函数使用介绍 2014-12-17

    这篇文章主要介绍了JavaScript中的eval()函数使用介绍,本文讲解了eval()的使用.eval()的返回值.变量环境(variable environment)等内容,需要的朋友可以参考下 在JavaScript中,可以使用eval()函数来解析字符串中的JavaScript代码,并返回相应的代码执行结果: console.log(eval("42 * 2"));//84 就本质而言,eval()是JavaScript全局对象的一个函数.比如,上述代码等价于: 复制代码 代

  • JavaScript中的普通函数与构造函数比较 2015-01-26

    这篇文章主要介绍了JavaScript中的普通函数与构造函数比较,需要的朋友可以参考下 问题 什么是构造函数? 构造函数与普通函数区别是什么? 用new关键字的时候到底做了什么? 构造函数有返回值怎么办? 构造函数能当普通函数调用吗? 以下是我的一些理解,理解错误的地方恳请大家帮忙指正,谢谢! this this永远指向当前正在被执行的函数或方法的owner.例如: function test(){ console.log(this); } test(); //Window {top: Wind

  • Javascript中实现trim()函数的两种方法 2015-02-04

    这篇文章主要介绍了Javascript中实现trim()函数的两种方法,本文直接给出实现代码和使用方法,需要的朋友可以参考下 在JavaScript中我们需要用到trim的地方很多,但是JavaScript又没有独立的trim函数或者方法可以使用,所以我们需要自己写个trim函数来实现我们的目的. 方案一: 以原型方式调用,即obj.trim()形式,此方式简单且使用方面广泛,定义方式如下: <script language="javascript"> /** * 删除左右

  • Javascript中的匿名函数与封装介绍 2015-03-19

    这篇文章主要介绍了Javascript中的匿名函数与封装介绍,本文分析了jQuery 封装.Backbone 封装.Underscore 封装等内容,需要的朋友可以参考下 迷惑了一会儿不同JS库的封装后,终于有了点头绪.大致就是: 创建一个自调用匿名函数,设计参数window,并传入window对象. 而这个过程的目的则是, 复制代码 代码如下: 使得自身的代码不会被其他代码污染,同时也可以不污染其他代码. jQuery 封装 于是找了个早期版本的jQuery,版本号是1.7.1里面的封装代码大

  • 理解javascript中的回调函数(callback) 2015-03-25

    这篇文章主要介绍了理解javascript中的回调函数(callback),本文着重于对回调函数概念的理解,需要的朋友可以参考下 最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); app是

  • Javascript中的回调函数和匿名函数的回调示例介绍 2015-04-15

    这篇文章主要介绍了Javascript中的回调函数和匿名函数的回调,需要的朋友可以参考下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 匿名函数自调的意义: 1.营造了一个封闭的空间 2

  • JavaScript中的ubound函数使用实例 2015-05-04

    这篇文章主要介绍了JavaScript中的ubound函数使用实例,本文先是讲解了ubound函数的语法,然后给出了用法代码实例,需要的朋友可以参考下 JavaScript中ubound函数方法是返回在 VBArray 的指定维中所使用的最大索引值.使用方法: safeArray.ubound(dimension) 其中safeArray是必选项.是一个 VBArray 对象. dimension是可选项.要获知其索引上界的 VBArray 的维数.如果忽略,ubound 将该参数作为 1 进行

  • JavaScript中Date.parse 函数用法 2013-06-19

    javascript Date函数与操作Date2009-09-30 20:24 使用Date对象 支持脚本的浏览器含一个全局Date对象(事实上,每个窗口都有一个Date对象),这个对象总是存在的,随时随地都可被调用.Date对象是一个静态对象,当需要处理日期时,可以调用Date对象的构造函数,获取一个与特定事件和日期关联的Date对象实体.如果不带参数调用这个构造函数,格式如下: var today=new Date(); Date对象取得了PC内部时钟的一个快照,并同时返回一个Date对象

  • 理解和使用 JavaScript 中的回调函数 2015-01-10

    原文: http: //javascriptissexy.com/ 在JavaScrip中, function 是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实际上是一种对象,它可以"存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值". 因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚

  • 关于javascript中的parseInt使用技巧 2014-08-28

    前面好几次遇到JavaScript中parseInt函数把字串转为数字,前面遇到过几次问题,然后就换其它方法进行比较. 要对表单中填写的日期格式进行客户端验证,于是在网上找了段代码,其中用到parseInt对年月日做判断,其中有类似这样的语句: ...... else if(parseInt(month)<1 || parseInt(month) >12) ...... 可是对于当前本来正确的日期,这里怎么也通不过.后来一查才明白,parseInt实际上有两个参数,第一个是要转换的值,第二个是

  • JavaScript中常用的函数以及基础写法汇总 2014-01-14

    1.document.write("");为 输出语句 2.JS中单行注释为//,多行注释为/**/ 3.传统的HTML文档顺序是:document->html-> (head,body) 4.一个浏览器窗口中的DOM顺序是:window-> (navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或

  • Javascript中的数学函数集合 2013-11-19

    在Javascript中,数学方法可以分成以下几类: constans(常数).power functions(乘方函数).trigonometic functions(三角函数).rounding functions(舍入函数).random numbers(随机数字) 引用 常数和乘方函数 Math.E 自然对数的底(为常数) 2.718 Math.LN10 10的自然对数 2.302 Math.LN2 2的自然对数 0.693 Math.PI 圆周率 3.1415 Math.SQRT1_2

  • JavaScript中匿名.命名函数的性能测试 2014-02-04

    这篇文章主要介绍了JavaScript中匿名.命名函数的性能测试,简单来讲匿名即没有名字的函数,它和命名函数相比性能如何呢,本文即是对它们性能的测试,需要的朋友可以参考下 我们经常通过匿名函数(Anonymous function)来写回调. 简单来讲匿名即没有名字的函数,一般都立即执行.但是它与命名函数(有名字的函数)的性能如何呢? 我们可以比较一下,我们随便找一台可以执行Shell命令的计算机来使用大量函数调用看一看二者执行消耗时间: anonymous.js var count = 100

  • 在JavaScript中使用inline函数的问题 2015-03-14

    前段时间被IE和JavaScript脚本引擎的Memory Leak问题弄得郁闷坏了,不过幸好现在总算是柳暗花明了,并且找到了一些IE中使用脚本避免ML问题的方法.继续研究JavaScript的编写,有发现一些不算ML问题,但是可以节约IE内存使用的方法,在此和大家讨论讨论. 我们在JavaScript中编写代码,对于定义函数的语句: function foo() { // TODO: . . . return x; } 可以说是在熟悉不过了.当然除了这种定义函数的方法,我们还有另外几种方法也能