珠峰培训

正则实战应用技巧:获取URL地址栏的参数

作者:zhouxiaotian

2016-07-02 21:47:34

567

在真实的项目中,我们经常使用URL传参的方式实现两个页面之间的通信,例如:A页面是一个列表页面,B页面是一个详细页面,我们点击列表中的每一条纪录都会跳转到同一个详细页面,这样就需要我们在详细页面区分具体点击的是那一条纪录,遇到这样的情况,我们通常会在跳转的URL地址后面加上对应的标识,例如:b.html?id=12&name=zhufeng#peixun;当加载B页面的时候,我么首先获取地址栏中URL后面的参数值,然后根据不同的值获取不同的数据最后展示在页面上。

今天我们就使用两种方法把问号后面的参数值都获取到。

方法一:字符串拆分法

这种方式操作起来代码比较的繁琐,也不利于后期的维护和扩展,但是是目前市场上最通用的方法之一。(不要问我为啥,因为大部分公司都不会正则处理 (*^__^*) 嘻嘻……)


    String.prototype.queryURLParameter = function () {
        //->获取截取的开始和结束索引
        var strIndex = this.indexOf("?"),
            endIndex = this.lastIndexOf("#"),
            resStr = "";

        //->检测字符串中是否包含?和#
        if (strIndex > -1) {
            if (endIndex === -1) {
                resStr = this.substring(strIndex + 1);
            } else {
                resStr = this.substring(strIndex + 1, endIndex);
            }
        }

        //->开始进行字符串的拆分和拼接
        var ary = resStr.split("&"),
            obj = {};
        for (var i = 0; i < ary.length; i++) {
            var cur = ary[i],
                curAry = cur.split("=");
            obj[curAry[0]] = curAry[1];
        }
        return obj;
    };
    console.log(str.queryURLParameter()); //->{id:12,name:'zhufeng'}

方法二:正则捕获法

使用正则可以有效的减少很多开发的代码,不仅仅提高了开发的效率,而且后期的扩展性也非常的好。以下我们用到了replace方法,replace还可以处理很多的需求,例如:“格式化时间字符串”


    String.prototype.queryURLParameter = function () {
        var obj = {},
            reg = /([^?=&#]+)=([^?=&#]+)/g;
        this.replace(reg, function () {
            var key = arguments[1],
                value = arguments[2];
            obj[key] = value;
        });
        return obj;
    };
    console.log(str.queryURLParameter()); //->{id:12,name:'zhufeng'}

如果想学习到更多实战的技巧,敬请关注 珠峰培训技术资料 。同时也欢迎大家参加珠峰培训JS+HTML5+NODE的一系列前端开发课程,在这里你能学到从基础到深入JS编程,也能学到当下最火的HTML5移动端开发、以及最前沿的框架和NODE...