函数用途:如标题。1. 从URL中解析出參数,2.重写URL中的參数值
例如以下代码所看到的。包括了測试。能够直接copy到浏览器中,输入測试地址:localhost:xxx?a=1&b=2&c=3 ,在console中执行查看结果:
// - test // - get from current location
var url = document.location.href; // - extract param from url
console.log(getUrlParam(url,"a") == "1");
console.log(getUrlParam(url,"b") == "2");
console.log(getUrlParam(url,"c") == "3"); // - rewrite url
url = setUrlParam(url,"a",3);
url = setUrlParam(url,"b",1);
url = setUrlParam(url,"c",2); console.log(getUrlParam(url,"a") == "3");
console.log(getUrlParam(url,"b") == "1");
console.log(getUrlParam(url,"c") == "2"); // - helper functions function getUrlParam(location,name) {
var url = location;
var splitIndex = url.indexOf("?") + 1;
var paramStr = url.substr(splitIndex, url.length); var arr = paramStr.split('&');
for (var i = 0; i < arr.length; i++) {
var kv = arr[i].split('=');
if (kv[0] == name) {
return kv[1];
}
}
return "";
} function setUrlParam(location,name, value) {
var url = location;
var splitIndex = url.indexOf("?") + 1;
var paramStr = url.substr(splitIndex, url.length); var newUrl = url.substr(0, splitIndex); // - if exist , replace
var arr = paramStr.split('&');
for (var i = 0; i < arr.length; i++) {
var kv = arr[i].split('=');
if (kv[0] == name) {
newUrl += kv[0] + "=" + value;
} else {
if (kv[1] != undefined) {
newUrl += kv[0] + "=" + kv[1];
}
}
if (i != arr.length - 1) {
newUrl += "&";
}
} // - if new, add
if (newUrl.indexOf(name) < 0) {
newUrl += splitIndex == 0 ? "?" + name + "=" + value : "&" + name + "=" + value;
}
return newUrl;
}
IE中执行结果: