javascript - 如果存在查询字符串值,则删除参数并重置 url

标签 javascript jquery

我的网址看起来像这样

/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
  }

});

希望这对您有所帮助。

问候,

马塞洛

关于javascript - 如果存在查询字符串值,则删除参数并重置 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501997/

相关文章:

javascript - 使用ajax获取XML数据时阻止跨源请求

javascript - 在 jquery Ajax 中发布对象

jquery - 页面之间的水平滑动

javascript - 使用 javascript 更改 javascript 代码

javascript - 在直接链接之前通过 javascript/jquery 清空 PHP session 变量

javascript - jQuery 根据输入添加或删除表格行

Javascript - 将参数传递给函数时出现问题 : passing them in diffrent order returns wrong values

jquery - 如何使用 jQuery 更新选择选项?

javascript - 使用javascript在客户端动态创建面包屑

javascript - 显示 :None destroys the rendering of other jquery objects