昨天写的一个js方法,感觉还不错,作用就是给url增加参数。
举例说,我有个需求
我当前的url为 http://caijt.com/index.php?b=345
我想传个参数 a ,值为123的话,那么我就直接在后面增加 &a=123,可是如果我的url为 http://caijt.com/index.php?a=1&b=345,那我就得先判断是否已有参数 a 了
方法如下,url
为传入的 url 链接,name
为参数名称,value
为值,返回修改后的url,如果value为空的话,就会删除name这个参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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; } } } |
自我感觉,这个js方法还是很不错的,哈哈哈