相对来说比较简单的获取方式说说思路:
1、获取到当前网址的url之后,直接获取“?”后面的内容,
var num=str.indexOf("?")
str=str.substr(num+1);
//控制台输出结果“category=后端开发&course_type=all&fee=all&tag=PHP&unfold=0”
2、获取到新的字符串。干掉字符串中的所有“&”符号,形成了带等于号的数组
var arr=str.split("&");
//控制台输出结果"category=后端开发,course_type=all,fee=all,tag=PHP,unfold=0"
3、声明数组newArr,并且循环arr数组将等于号去掉,每条数据push到newArr中形成新的数组
var newArr = [];
for(var i = 0; i < arr.length; i++){
var nnum = arr[i].indexOf("=");
newArr.push(arr[i].substring(0,nnum));
newArr.push(arr[i].substr(nnum + 1));
}
//控制台输出结果"category,后端开发,course_type,all,fee,all,tag,PHP,unfold,0"
4、获取当前传入的参数名称下标,根据下标获取newArr数组的下一个下标的内容,就是该参数的值了。当然如果传入的参数名错误的话,小标为-1,走if语句的else;
var paraIndex = newArr.indexOf(para);
if(paraIndex >= 0){
return newArr[paraIndex+1];
}else{
return para + "不是正确的参数名"
}
这里全部顺序理完了,当然不会有哪个开发者会写错参数名称的,当然如果怕脑残认识的,第四步的if语句还可以在做一个判断,用获取的下标取模2,如果为0那么就是参数名了。嘿嘿。
下面抛出完整代码。
var url = "https://www.xxxxxxxxx.com/courses/?category=后端开发&course_type=all&fee=all&tag=PHP&unfold=0";
function getUrlpara(para){
var name,value;
//取得整个地址栏,因为测试需要,现在用的自定义的url,正式环境,可以把var str=location.href;放开,把var str = url;隐藏或者删掉,上面的url声明也可以没用
//var str=location.href;
var str = url;
var num=str.indexOf("?")
str=str.substr(num+1);
var arr=str.split("&");
var newArr = [];
for(var i = 0; i < arr.length; i++){
var nnum = arr[i].indexOf("=");
newArr.push(arr[i].substring(0,nnum));
newArr.push(arr[i].substr(nnum + 1));
}
var paraIndex = newArr.indexOf(para);
if(paraIndex >= 0){
return newArr[paraIndex+1];
}else{
return para + "不是正确的参数名"
}
}
//调用方式getUrlpara("参数名")
document.write(getUrlpara("category"));
当然有些声明可以删减,并且可以精简很多语句。但是这样理解起来不是更轻松?