简单实现使用JavaScript重置url参数 ,两种方法,一种字符串拼接形式,一种使用正则判断,且都已经测试通过。供大家参考指教。
1、字符拼接形式
function setUri(para, val) { var strNewUrl = new String(); var strUrl = new String(); var url = window.location.href; strUrl = window.location.href; if (strUrl.indexOf("?") != -1) { strUrl = strUrl.substr(strUrl.indexOf("?") + 1); //获取参数 if (strUrl.toLowerCase().indexOf(para.toLowerCase()) == -1) { //如果没有找到参数,则直接赋值 strNewUrl = url + "&" + para + "=" + val; window.location.href = strNewUrl; } else { var aParam = strUrl.split("&"); for (var i = 0; i < aParam.length; i++) { if (aParam[i].substr(0, aParam[i].indexOf("=")).toLowerCase() == para.toLowerCase()) { aParam[i] = aParam[i].substr(0, aParam[i].indexOf("=")) + "=" + val; } } strNewUrl = url.substr(0, url.indexOf("?") + 1) + aParam.join("&"); window.location.href = strNewUrl; } } else { strUrl += "?" + para + "=" + val; window.location.href = strUrl; } }
2、利用正则
1 function setPara(para, val) { 2 var newpar = ""; 3 var url = window.location.href; 4 var pars = location.search.substring(1); 5 6 var reg = new RegExp("(^|)" + para + "=([^&]*)(|$)"); 7 if (reg.test(pars)) { //有需要的参数para 8 9 var p1 = pars.split(para)[0]; //productID=100857&count=1&10 var p2 = pars.split(para)[1]; //=75825&coupval=1.5&addressID=358&invoiceID=1245&invoiceName=jesse11 12 if (p2.indexOf("&") > -1) {13 var p3 = p2.split("&")[0];14 if (p3 == "=" + val + "") {15 return false;16 }17 newpar = p1 + para + '=' + val + p2.substr(2);18 } else {19 if (p1) {20 newpar = p1 + para + '=' + val;21 } else {22 newpar = para + '=' + val;23 }24 }25 } else {26 if (url.indexOf("?") == -1) { //没有参数27 newpar = para + "=" + val;28 } else {29 newpar = pars + "&" + para + "=" + val;30 }31 }32 window.location.href = location.href.split('?')[0] + "?" + newpar;33 }
调用: