获取url的各个参数的值

相对来说比较简单的获取方式说说思路:
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"));

当然有些声明可以删减,并且可以精简很多语句。但是这样理解起来不是更轻松?

你可能感兴趣的:(获取url的各个参数的值)