参考博客:https://blog.csdn.net/github_36704158/article/details/75269194
题目:
获取 url 中的参数
1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}
3. 如果存在多个同名参数,则返回数组
知识点:
URL:统一资源定位符(URL,英语Uniform Resource Locator的缩写)也被称为网页地址,是因特网上标准的资源的地址。
Location 对象包含有关当前 URL 的信息。
Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。
hash 设置或返回从井号 (#) 开始的 URL(锚)。
host 设置或返回主机名和当前 URL 的端口号。
hostname 设置或返回当前 URL 的主机名。
href 设置或返回完整的 URL。
pathname 设置或返回当前 URL 的路径部分。
port 设置或返回当前 URL 的端口号。
protocol 设置或返回当前 URL 的协议。
search 设置或返回从问号 (?) 开始的 URL(查询部分)。
function getUrlParam(sUrl, sKey) {
var result = {};
if(sUrl.indexOf('?')<0){// indexOf()的用法:返回字符中indexof(string)中字串string在父串中首次出现的位置,从0开始!没有返回-1;
return result;//没有参数,返回{}
}
url = sUrl.split('?');//"2:3:4:5".split(":") //将返回["2", "3", "4", "5"]
url = url[1].split('#');
url = url[0].split('&');
url = url.slice(0);//slice(start, end) 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
//使用 start(包含) 和 end(不包含) 参数来指定字符串提取的部分。
for(var idx in url){
var current = url[idx].split('=');
var key = current[0];
if(result[key]){
result[key]=[].concat(result[key],current[1]);
}else{
result[key]=current[1];
}
//console.log(result[key]);
}
// url : http://www.baidu.com?key=1&key=2&key=3&test=4&tt=5&test=2
// 这时候 result 形如:{"key":["1","2","3"],"test":["4","2"],"tt":["5"]}
if(sKey){
return result[sKey] || '';
}else{
return result;
}
}
function getUrlParam(sUrl, sKey) {
var param = sUrl.split('#')[0].split('?')[1];
if (sKey){//指定参数名称
var strs = param.split('&');
var arrs = new Array();//如果存在多个同名参数,则返回数组
for(var i = 0, len = strs.length; i < len; i++){
var tmp = strs[i].split('=');
if(tmp[0] == sKey){
arrs.push(tmp[1]);
}
}
if (arrs.length == 1){//返回该参数的值或者空字符串
return arrs[0];
} else if (arrs.length == 0){
return "";
} else {
return arrs;
}
} else {//不指定参数名称,返回全部的参数对象 或者 {}
if(param == undefined || param == ""){
return {};
} else {
var strs = param.split('&');
var arrObj = new Object();
for(var i = 0, len = strs.length; i < len; i++){
var tmp = strs[i].split('=');
if (!(tmp[0] in arrObj)) {
arrObj[tmp[0]] = [];
}
arrObj[tmp[0]].push(tmp[1]);
}
return arrObj;
}
}
}