js 批量获取浏览器参数

以前获取浏览器参数是这样的

function GetQueryString(name)
{
     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     var r = window.location.search.substr(1).match(reg);
     if(r!=null)
        return  unescape(r[2]);
      return null;
}

// 调用方法
alert(GetQueryString("参数名1"));

这种方法适合获取单个的参数,但是当参数一多的时候就会很麻烦,有没有办法将浏览器的参数都放到一个对象里面呢?于是我就写了下面的这个方法

function getParameters() {                    //获取地址栏参数不包括hash值
            var search = decodeURI(location.search);//防止中文乱码
            search = search.replace('?', '');
            var searray = search.split("&");
            var obj = {}
            searray.map(function (item) {
                var sarry = item.split('=');
                obj[sarry[0]] = sarry[1];
            })
            return obj;
}

var para=getParameters();

是不是很简单,也很方便

恩,然后第一个获取单个的时候有优势,一个在获取所有的时候有优势,所以能不能整合一下呢?

好的,说干就干,修改下

function getParameters(obj) {//获取地址栏参数不包括hash值
            var search = decodeURI(location.search).replace('?', '');//防止中文乱码
            if(typeof obj=="string"){
                var reg = new RegExp("(^|&)"+ obj +"=([^&]*)(&|$)");
                var r = window.location.search.substr(1).match(reg);
                if(r!=null)return  unescape(r[2]); return null;
            }else if(typeof obj=="undefined"){
                var searray = search.split("&");
                var obj = {}
                searray.map(function (item) {
                    var sarry = item.split('=');
                    obj[sarry[0]] = sarry[1];
                })
                return obj;
            }

}

// getParameters();
//  getParameters('tn');

不满足的你是不是又在想我既不想获取一个也不想获取全部,我就想获取其中的几个呢?

谁让我这么爱你呢,满足你。

所以最终代码变成了这样

function getParameters(obj) {//获取地址栏参数不包括hash值
            var search = decodeURI(location.search).replace('?', '');//防止中文乱码
            if(typeof obj=="string"){
                var reg = new RegExp("(^|&)"+ obj +"=([^&]*)(&|$)");
                var r = window.location.search.substr(1).match(reg);
                if(r!=null)return  unescape(r[2]); return null;
            }else if(typeof obj=="undefined"){
                var searray = search.split("&");
                var obj = {}
                searray.map(function (item) {
                    var sarry = item.split('=');
                    obj[sarry[0]] = sarry[1];
                })
                return obj;
            }else if(obj.constructor ==Array){
                var searray = search.split("&");
                var fromarray = {}
                searray.map(function (item) {                 
                    var sarry = item.split('=');
                     if(obj.indexOf(sarry[0])>-1){
                          fromarray[sarry[0]] = sarry[1];   
                     }

                })
                return fromarray;
            }

}

// getParameters();
//  getParameters('tn');
 //getParameters(['tn','wd']);

么么哒。

猜你喜欢

转载自blog.51cto.com/13496570/2416775