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;   
}   
相關文章
相關標籤/搜索