url参数和key
function getUrlParam(sUrl, sKey) {
var paramsN = sUrl.split("?")[1];//取出url后的字符串 key=1&key=2&key=3&key=4&test=4#hehe
var params = paramsN.split("#")[0];//剔除字符串#后的杂质 key=1&key=2&key=3&key=4&test=4
var param = params.split("&");//将字符串分割为键值对为一项的数组
console.log(param)//0: "key=1 1: "key=2" 2: "key=3" 3: "key=4" 4: "test=4"
var arr = [];
if (sKey) {//如果有参数
for (var i = 0; i < param.length; i++) {//遍历键值对数组
var keyV = param[i].split("=");//分开键和值
if (keyV[0] === sKey) {//如果键名和传入的参数一样的键,则将其值插入到空数组中
arr.push(keyV[1]);
}
}
if (arr.length === 0) {//如果数组仍为空,则证明没有传入key的对应参数的值
return "";
} else if (arr.length > 1) {//有多个值
return arr;
} else {//只有一个值
return arr[0];
}
} else {//没有传入参数,返回对象
var obj = {};
for (var i = 0; i < param.length; i++) {//遍历
var keyV = param[i].split("=");//分开键和值
if (obj[keyV[0]]) {//如果对象中有该属性
obj[keyV[0]].push(keyV[1])//插入该属性中的数组中
} else {
obj[keyV[0]] = [keyV[1]]//如果没有则创建一个数组并且把值放入该数组中
}
}
for (var key in obj) {//遍历插入数据的对象
if (obj[key].length === 1) {//如果该对象的属性值的数组的长度为一
obj[key] = obj[key][0]//则让该对象的该属性值为数组里的值
}
}
return obj;
}
}
总结:查找url参数本身并不难,关键是字符串的分割,拼接以及skey参数的确认