//思路
// 1、先判断url是否包含参数,如果不包含,判断是否查找了指定参数,如果指定了就返回空字符串,没有指定就返回空对象
//2、url中存在包含参数,判断是否指定了参数,如果指定了就返回该参数,如果没有指定返回全部参数对象
//3、假设url中包含参数,不管指没指定参数,只要存在多个同名的参数,这个参数的值以数组形式展现
function getUrlParam(sUrl, sKey) {
var obj = {};
//url中没传参
if(sUrl.indexOf('?') == -1) {//没包含参数
if(sKey==undefined){//没指定参数
return obj;
}else{//指定就返回空字符串
return "";
}
}
//url中包含参数,对url进行处理获取参数内容
var paramArr1 = (sUrl.split("?")[1]).split("#")[0];
var paramArr2 = paramArr1.split('&');
for(var i=0;i<paramArr2.length;i++){
var keyValue = paramArr2[i].split("=");
var key = keyValue[0];
var value = keyValue[1];
// if(value ==""){
// continue;
// }
if(obj.hasOwnProperty(key)){//判断obj中是否已包含参数名
if(Array.isArray(obj[key])){//判断已存在的参数名的值是否为数组
obj[key].push(value);
}else{//不是数组,说明url中最多包含两个相同参数名
var val = obj[key];//记录之前已经存在的该参数名下的值
obj[key] = [];//把值的类型定义为数组
obj[key].push(val);//先存入之前存在的参数值
obj[key].push(value);//在存入第二个参数值
}
}else{//有新参数,直接添加
obj[key]=value;
}
}
//是否有指定参数,如果指定返回指定内容或空;如果没指定返回obj
if(sKey){
return obj[sKey]?obj[sKey]:"";
}else{
return obj;
}
}
参考文章:https://blog.youkuaiyun.com/weixin_30436101/article/details/95610098