昨天写的一个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;
}
}
}