Javascript 如果querystring值存在,请删除参数并重置url

Javascript 如果querystring值存在,请删除参数并重置url,javascript,jquery,Javascript,Jquery,我的url看起来像这样 /myurl?code1=abcde&code2=fghijk&code3=lmnop&code4=qrstu&code5=vwxyz(最多5个代码变量) 我有一个onclick事件,其中我得到了代码变量,例如在上面的示例中,它返回'fghijk',但我不知道参数,例如code2。所以我想做两件事: 1)从我的url中查找并删除参数和值(如果我的onclick变量返回'fghijk',在上面的示例中,我的url变为,/myurl?code1=abcde&code3=lmn

我的url看起来像这样

/myurl?code1=abcde&code2=fghijk&code3=lmnop&code4=qrstu&code5=vwxyz(最多5个代码变量)

我有一个onclick事件,其中我得到了代码变量,例如在上面的示例中,它返回'fghijk',但我不知道参数,例如code2。所以我想做两件事:

1)从我的url中查找并删除参数和值(如果我的onclick变量返回'fghijk',在上面的示例中,我的url变为,/myurl?code1=abcde&code3=lmnop&code4=qrstu&code5=vwxyz)

2)在此之后,我想重置参数编号,以便我的代码参数从1开始按顺序排列,因此在上面的编号1执行后,我的url应该变成/myurl?code1=abcde&code2=lmnop&code3=qrstu&code4=vwxyz

$('.myelement').on('click', function() {
  var url = $('.myelement a').attr('href');
  var codevar = $('.myelement span').text();
  if(url +'contains('+codevar+')') {
   // strip the param and variable from the url here

   // now reset the url so code params are in number sequence
  }

});

你可以这样做:

$('.myelement').on('click', function() {
  var url = $('.myelement a').attr('href');
  var codevar = $('.myelement span').text();
  if(url.match(codevar)) {
   var queryString = url.substring(url.indexOf("?") + 1);
   var params = queryString.split("&");
   var codeIndex = 1;
   var newQuery = "";
   for (var i = 0; i < params.length; i++) {
     if (!params[i].match(codevar)) {
       newQuery += params[i].replace(/code[0-9]/, "code" + codeIndex);
       codeIndex++;
       if (i < params.length - 1) {
         newQuery += "&";
       }
     } 
   }
   url = url.replace(queryString, newQuery).replace(/&$/, ""); //new query string with the sequential parameters
  }

});
$('.myelement')。在('click',function()上{
var url=$('.myelement a').attr('href');
var codevar=$('.myelement span').text();
if(url.match(codevar)){
var queryString=url.substring(url.indexOf(“?”)+1);
var params=queryString.split(“&”);
var codeIndex=1;
var newQuery=“”;
对于(变量i=0;i
希望这有帮助

问候,


Marcelo

您可以使用参数作为键拆分url

var el = $('.myelement'),
    out = $("#output");

el.on('click', function (ev) {
    ev.preventDefault();
    var href = el.find("a").prop("href"),
        param = el.find("span").text(),
        idx = href.indexOf(param),
        arr = [], url;

    if (idx > -1) {
        arr = href.split(param);  // split href[0] param href[1]
        url = arr.join("mynewvalue");
        out.text(url);
    }
});
演示

var codevar='fghijk';
var url=$('.myelement a').attr('href');
var param='&'+url.substring(url.indexOf('?')+1);
url=url.substring(0,url.indexOf('?')+1);
if(参数indexOf(codevar)>-1){
var arr=参数拆分(“&code”);
参数='';

对于(var i=1;i

几乎在那里,它工作直到我到达最后一个变量,然后我得到arr[i]是未定义的,有什么想法吗?@uknowit2这个错误是否出现在我的提琴中?你能用你的代码创建一个提琴吗?你可以尝试做
;它工作得很好,在我的示例中,我留下了一个尾随“&”如果我从url中删除最后一个变量,我会在url的末尾留下一个?如果这是最后一个变量,我如何删除它?我可以得到更新吗?您解决了问题了吗?还是仍然有错误?
  var codevar = 'fghijk';
  var url = $('.myelement a').attr('href');
  var param = '&'+url.substring(url.indexOf('?')+1);
  url = url.substring(0,url.indexOf('?')+1);
  if(param.indexOf(codevar) > -1) {
      var arr = param.split("&code");
      param = '';
      for(var i = 1;i<arr.length;i++){
          if(codevar == arr[i].substring(2))
              arr.splice(i, 1);
          param += 'code'+i+'='+arr[i].substring(2);
          if(i != arr.length-1)
              param +='&';
      }
      $('.myelement a').attr('href',url+param);