题目:
获取 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;
}
}