js方法智能给url传参数

昨天写的一个js方法,感觉还不错


作用就是给url增加参数

举例说,我有个需求

我当前的url为 http://laocaiit.com/index.php?b=345

我想传个参数a ,值为123的话,那么我就直接在后面增加&a=123,可是如果我的url为http://laocaiit.com/index.php?a=1&b=345,那我就得先判断是否已有参数a了


方法如下,url为传入的url链接,name为参数名称,value为值,返回修改后的url,如果value为空的话,就会删除name这个参数

function setUrlParam(url,name,value) {
        var localUrl = url;        
        if(value!=null){
        	//增加或修改url参数
        	//判断URL是否带有?号
            if (localUrl.indexOf("?") < 0) {
            	//判断url是否有#
                var a=localUrl.indexOf("#");
                if(a<0){
                    return localUrl + "?" + name + "=" + value;
                }else{
                    return localUrl.substring(0,a)+"?"+name+"="+value+localUrl.substring(a);
                }
              
            } else {            
                var regex = new RegExp("([\\?&]" + name + "=)[^&#]*");        
                if (regex.test(localUrl)) {            
                    return localUrl.replace(regex, "$1"+value);
                }
                else {   
                    var a=localUrl.indexOf("#");
                    if(a<0){
                        return localUrl + "&" + name + "=" + value;
                    }else{
                        return localUrl.substring(0,a)+"&"+name+"="+value+localUrl.substring(a);
                    }                    
                }
            }
        }else{
        	//删除url的参数
            var regex = new RegExp("([\\?&])" + name + "=[^&#]*(&?)");        
            if (regex.test(localUrl)) { 
                return localUrl.replace(regex, function(m,p1,p2){
                	if(p1=="?"){
                		return p2=="&"?"?":"";
                	}else{
                		return p2;
                	}
                });
            }else{
            	return localUrl;
            }
            
        }
        
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值