執行個體1
代碼如下 |
複製代碼 |
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; }
調用方法
alert(GetQueryString("參數名1")); alert(GetQueryString("參數名2")); alert(GetQueryString("參數名3")); |
如:getUrlParam("id")。
這個方法通過構造一個Regex來匹配到需要查詢的url參數,location.search是擷取到url中的查詢字串部分。這個方法的優點是簡潔,缺點是每次都需要對字串進行分析尋找,多次查詢同一個參數效率低下,所以有了下面這個方法。
擷取url參考值方法二
代碼如下 |
複製代碼 |
<span style="font-size: 16px;"><Script language="javascript"> function GetRequest() { 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; } </Script></span>
|
這樣調用:
代碼如下 |
複製代碼 |
<Script language="javascript"> var Request = new Object(); Request = GetRequest(); var 參數1,參數2,參數3,參數N; 參數1 = Request['參數1']; 參數2 = Request['參數2']; 參數3 = Request['參數3']; 參數N = Request['參數N']; </Script> |
利用閉包和Regex實現
代碼如下 |
複製代碼 |
var getUrlParam = function(){ var args = null; return function(name){ if(args === null){ if(location.search == "") return ""; var queryArray = location.search.substring(1).split("&"); var i; args = {}; for(i = 0;i < queryArray.length;i++){ var match = queryArray[i].match(/([^=]+)=([^=]+)/); if(match !== null){ args[match[1]] = match[2]; } } } return args[name] == undefined ? "" : args[name]; }; }(); |
這個方法利用了js的函數閉包,將url參數都儲存在一個匿名函數裡面的args變數中,而且除了通過getUrlParam外,任何方法都訪問不到該變數。而且只有第一次擷取url參數的時候才會分析url,以後就直接從變數args中讀取。