我有一个脚本,可以在点击时将参数添加到网址 - 并在第二次点击时将参数替换为另一个参数。这非常有效。
然而,有一个场景已经存在一个参数 - 然后我需要这个点击来替换该值。
示例:
点击一下
?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;
});
答案 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);
好的,你可以做的是(根据你发布的代码):
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;
});