js獲取url連結中的引數

antzone發表於2017-03-15

url傳遞引數這是常識,這裡就不多介紹了,既然傳遞引數就要獲取引數的值,下面就介紹一下如何實現此功能。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
function request(paras){ 
  var url="softwhy.com?a=1&b=2";  
  var paraString=url.substring(url.indexOf("?")+1,url.length).split("&");  
  var paraObj={}  
  for(var i=0;i<paraString.length;i++){
    var j=paraString[i]; 
    paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length);  
  }  
  var returnValue=paraObj[paras.toLowerCase()];  
  if(typeof(returnValue)=="undefined"){  
    return "";  
  }
  else{  
    return returnValue;  
  }  
} 
console.log(request('a')); 
console.log(request('b'));

以上程式碼實現了我們想要的功能,能夠輸出指定的url中引數的值,下面簡單介紹一下實現過程。

一.實現原理:

原理其實非常的簡單,一句話就是在正確的位置擷取字串,首先擷取?以後的字串,然後再使用&分割這個字串生成陣列,然後再通過擷取字串的方式,將引數名稱和引數值作為鍵值對存入物件直接量,原理大致如此。

二.程式碼註釋:

1.function request(param){},獲取引數值得函式,引數為url中的傳遞的引數名稱。

2.var url="softwhy.com?a=1&b=2",將要獲取引數的url連結地址。

3.var paraString=url.substring(url.indexOf("?")+1,url.length).split("&"),url.substring(url.indexOf("?")+1,url.length)先用這個擷取?以後的字元,然後再使用split()函式分割字串生成一個函式。

4.var paraObj={},宣告一個物件直接量。

5.for(var i=0;i<paraString.length;i++){},遍歷陣列中的每一個元素。

6.var j=paraString,將陣列中的元素賦值給j。

7.paraObj[j.substring(0,j.indexOf("=")).toLowerCase()]=j.substring(j.indexOf("=")+1,j.length),j.substring(0,j.indexOf("=")).toLowerCase()獲取的是url引數的名稱,j.substring(j.indexOf("=")+1,j.length)獲取引數值,這樣就是將引數名作為屬性名,引數值作為屬性值。

8.var returnValue=paraObj[param.toLowerCase()],指定屬性名稱的屬性值賦值給變數returnValue。

9.if(typeof(returnValue)=="undefined"){return ""},如果returnValue值為undefined,也就是說不存在,就返回空字元。

10.否則返回returnValue。

三.相關閱讀:

1.substring()函式可以參閱javascript substring()一章節。

2.indexOf()函式可以參閱javascript String indexOf()一章節。

3.split()函式可以參閱javascript split()一章節。

4.toLowerCase()函式可以參閱javascript toLowerCase()一章節。

相關文章