js中关于带数字类型参数传参丢失首位数字0问题

最近在项目中遇到一个问题,js中传带有数字的参数时,若是参数开头有数字0,会把0给去掉。javascript

例如:java

方法abc(0123456,789);url

方法abc中获取的参数0123456就会变为123456。spa

缘由推测:code

因为js对数据类型没有一个具体的声明,传入的数值有可能被其默认当中数字  而将多余的0给自动去除了。blog

当参数含有0的时候,若是没有对它进行处理,自动会去0, 可能js认为其是一个整数事件

有时候发现数字不只抹去开头的0,也会发生改变ip

例如:字符串

onclick="test(036)", 在test事件中打印出的这个参数解析为了30it

若是前缀为0,js会把你的数字当作八进制

一、方法传参时

解决方法:

方案1(推荐):

将数字参数转化为字符串传入进去,若是须要在方法里再转回来。

var str = "<a href=javascript:abc('"+ 0123456 +"')>abc</a>"

方案2:

在将数字类型的参数传入前进行特殊规则处理,将首位数字0替换,在方法里获取到时再换回来,我的以为这样比较麻烦,并且显得画蛇添足。

二、页面传参时

解决方法:

//使用
var Request = new Object();
    Request = GetRequest();
    参数名1= Request['参数名1'];
    参数名2= Request['参数名2'];
   
//定义
function GetRequest() {           //这种方法获取参数,有效避免了参数前面有0时,0被去掉的状况
       var url = location.search; //获取url中"?"符后的字串   
       var theRequest = new Object();   
       if (url.indexOf("?") != -1) {   
          var str = url.substr(1);   
          strs = str.split("&");   
          for(var i = 0; i < strs.length; i ++) {   
             theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);   
          }   
       }   
       return theRequest;   
}   
相关文章
相关标签/搜索