单击时更新参数

时间:2016-01-25 09:19:51

标签: javascript jquery

我有一个脚本,可以在点击时将参数添加到网址 - 并在第二次点击时将参数替换为另一个参数。这非常有效。

然而,有一个场景已经存在一个参数 - 然后我需要这个点击来替换该值。

示例:

点击一下

?param=largegrid 

第二个替换值并给出

?param=smallgrid

但有时网址看起来像这样:

?param=grid or param=grid&fss=tablet

在这种情况下,我希望点击替换第一个值,以便网址看起来像

?param=large or param=largegrid&fss=tablet 

和第二次点击相同。

$('.click10').on('click', function() {
console.log("Clicked");
var url = window.location.pathname;
var url = window.location.href;
if (url.indexOf('?param=largegrid') > -1) {
url = url.replace("?param=largegrid", "") + '?param=smallgrid'
} else {
url = url.replace("?param=smallgrid", "") + '?param=largegrid'
}
window.location.href = url;
});

3 个答案:

答案 0 :(得分:1)

你可以尝试这个,搜索网格或大网格的参数,然后你可以替换它们。



if (url.indexOf('?param=grid') > -1) {
url = url.replace("grid", "") + 'largegrid'
} else if(url.indexOf('largegrid') > -1) {
url = url.replace("largegrid", "") + 'smallgrid'
} else if(url.indexOf('smallgrid') > -1) {
url = url.replace("smallgrid", "") + 'largegrid'
}




答案 1 :(得分:0)

您可以使用正则表达式

url= url.replace(/(largegrid=)[^\&]+/,updated_largegrid);

更新

好的,你可以做的是(根据你发布的代码):

  • 具有onclick功能
  • 使用内var url = window.location.href;
  • 现在替换所有变量,例如url= url.replace(/(largegrid=)[^\&]+/,updated_largegrid);
  • 你现在好了

答案 2 :(得分:0)

我可以向图书馆URI.js推荐。它有助于解析和构建URI / URL。例如,如果查询参数已存在,则无需担心:

例如,两者

var newURL = URI("http://www.example.com/").setQuery("param", "smallgrid").toString();

var newURL = URI("http://www.example.com/?param=largegrid").setQuery("param", "smallgrid").toString();

都会产生http://www.example.com/?param=smallgrid

使用回调的事件处理程序示例:

$('.click10').on('click', function() {
  var url = window.location.href;

  url = URI(url).search(function(queryData) {
      queryData.param = (queryData.param === "largegrid") ? "smallgrid" : "largegrid";
  });

  window.location.href = url;
});