替换特定参数或整个URL

时间:2018-03-06 14:32:07

标签: javascript

我需要根据复选框输入替换一个新的窗口URL。我试图这样做:

    // get checkbox value
    var selection = $('input[type="checkbox"]:checked').val()
    // get current url
    var url = window.location.href;
    // prefix current URL with checkbox 
    url += '&site=' + selection + '&page=1';
    // debug line
    // console.log(url);
    // navigate to new URL
    location.replace(url);

我的网址末尾有一系列参数,如下所示:

mywebsite.com&site=main&page=1

我要么需要替换整个网址,要么只需以下参数

&安培;站点=主&安培;页= 1

关键是在最后一行。我尝试了一些这样的输出:

location.assign(url);location.replace(url);都提供:mywebsite.com&site=main&page=1&site=main&page=1

window.location.href()似乎有相同的行为,它不会取代整个网址。

我不明白的是location.replace() - 完整性检查reading MDN上的行为,引用:

  

Location.replace()方法用。替换当前资源   一个在提供的URL。

好的,我们来做吧。然后发生这种情况:

http://mywebsite.com&site=main&page=1&site=main&page=1

击败拳击 - 在控制台日志中 - 它返回正确的URL参数。因此我的控制台中的输出如下所示:

http://mywebsite.com&site=main&page=1

为什么不用新的URL替换整个URL?你如何用一个新的URL替换整个URL,或者只是以某种方式定位参数?正则表达式?

1 个答案:

答案 0 :(得分:1)

为什么不构建您想要的URL并设置它?

var hostAndPath = location.host + location.pathname;
var selection = $('input[type="checkbox"]:checked').val();
var url = hostAndPath + '?site=' + selection + '&page=1';
location.href = url;

如果你不知道你所在的页面是什么,那将是动态的,你可以这样做:

<!-- @@Formula: 

return (issue.getSeverity() * issue.getPriority()) 

-->