分析
- ?参数:?aaa=true&bbb=false
- hash参数:#aaa=true&bbb=false
解析?参数方法
利用正则表达式
1
2
3
4
5
6
7
8function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = decodeURI(window.location.search).substr(1).match(reg);
if (r !== null) return unescape(r[2]);
return null;
}
getQueryString('id');利用字符串和数组方法(此方法和解析#参数一致,使用window.location.search)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19function getURLParam(strParamName){
var strReturn='';
var query = this.location.search.substring(1); //获取URL中?后面的部分
if (query.length > 0){
var params = query.split("&"); // 以&符号将参数字符串拆分成数组
for (var i = 0 ; i < params.length ; i++){
var pos = params[i].indexOf("=");
var name = params[i].substring(0, pos); // 每个参数对的名称
var value = params[i].substring(pos + 1); // 每个参数对的值
if (name == strParamName) { // 找出需要的参数对的值
strReturn = value;
}
}
}
return strReturn;
}
getURLParam('id');
// 原理:利用location.search找到?后面的部分,利用&及split组合拆分成数组,利用=及substring解析出每个数组中的名称和值
解析hash参数方法
- 利用字符串和数组方法(此方法和解析?参数一致,使用window.location.hash)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19function getURLHashParam(strParamName){
var strReturn='';
var query = this.location.hash.substring(1); //获取URL中#后面的部分
if (query.length > 0){
var params = query.split("&"); // 以&符号将参数字符串拆分成数组
for (var i = 0 ; i < params.length ; i++){
var pos = params[i].indexOf("=");
var name = params[i].substring(0, pos); // 每个参数对的名称
var value = params[i].substring(pos + 1); // 每个参数对的值
if (name == strParamName) { // 找出需要的参数对的值
strReturn = value;
}
}
}
return strReturn;
}
getURLHashParam('id');
// 原理:利用location.hash找到#后面的部分,利用&及split组合拆分成数组,利用=及substring解析出每个数组中的名称和值