js中關於帶數字類型參數傳參丟失首位數字0問題


最近在項目中遇到一個問題,js中傳帶有數字的參數時,如果參數開頭有數字0,會把0給去掉。

例如:

方法abc(0123456,789);

方法abc中獲取的參數0123456就會變為123456。

原因推測:

由於js對數據類型沒有一個具體的聲明,傳入的數值有可能被其默認當中數字  而將多余的0給自動去除了。

當參數含有0的時候,如果沒有對它進行處理,自動會去0, 可能js認為其是一個整數

有時候發現數字不僅抹去開頭的0,也會發生改變

例如:

onclick="test(036)", 在test事件中打印出的這個參數解析為了30

如果前綴為0,js會把你的數字當做八進制

1、方法傳參時

解決方法:

方案1(推薦):

將數字參數轉化為字符串傳入進去,如果需要在方法里再轉回來。

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

方案2:

在將數字類型的參數傳入前進行特殊規則處理,將首位數字0替換,在方法里獲取到時再換回來,個人覺得這樣比較麻煩,而且顯得多此一舉。

2、頁面傳參時

解決方法:

//使用
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;   
}   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM