获得url中的参数的两种方法与url更新参数方法

1.获得url中的参数

//数组法

function getParam(key){

    var params = window.location.search;
    params = params.substr(params.indexOf("?")+1);
    params = params.split("&");
    for(var i=0;i<params.length;i++){
        if(params[i].indexOf(key+"=")>=0){
            return params[i].substr(params[i].indexOf("=")+1);
        }
    }     
    return null;//若找不到则返回null

}

//正则法

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

2. 更多时候是更新url参数,这包括添加,减出,更换,很多时候写的都很简单,但是并不严谨,比如说url中参数有a=1&aa=2,就要注意只能更换a=1,别不小心匹配正则把aa=2的后半截也换了,就变成了aa=1了,虽然这种情况不多见,但是不保证不出现,我测试了很多例子,下面写的这个应该是万无一失了,当然按规则使用~

function updateUrlPara(paras, name,value) { //传入的paras不带有?
        var tem = name + "=" + value
        var newParas = paras
        if(paras==undefined || paras =="" || paras == null) {
          newParas = tem;
        } else {
              reg = new RegExp("(^|&)" + name + "={0,1}([^&]*)(&|$)")//这个地方的={0,1}是因为"http://www.baidu.com?a"这种情况
              if(paras.match(reg)) {
                newParas = paras.replace(reg, "&")
            }
              newParas += "&" + tem
              newParas = newParas.replace(/&{2,}/g, "&").replace(/(^&*)|(&*$)/g, "")//把连续2个或以上的&替换成一个&,开头结尾的单独&去掉
          }
        return newParas;
    }
用如下例子测试下:

var url = [
        "http://www.baidu.com",
        "http://www.baidu.com?",
        "http://www.baidu.com?a",
        "http://www.baidu.com?a=",
        "http://www.baidu.com?a=1",
        "http://www.baidu.com?a=1&aa",
        "http://www.baidu.com?a=1&aa=2",
        "http://www.baidu.com?a=1&aa=2&aaa=3",
        "http://www.baidu.com?b=test&aa=2&a=1",
        "http://www.baidu.com?b=test&aa=2&a=1&",
        "http://www.baidu.com?&&c=haha&&b=test&aa=2&&&a=1&&&"
    ]
    for(var i=0; i<url.length; i++) {
        let j = url[i].indexOf("?")
        let _url = url[i], paras = ""
        if(j!=-1) {
            _url = _url.substr(0, j)
            paras = url[i].substr(j+1, url[i].length)
        }
        let newUrl =_url + "?" + updateUrlPara(paras, "a", "999");
        console.log(newUrl)
    }



结果如下:


通过~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值