我遇到了以下问题。
我必须为我的网站制作一个菜单(比如booking.com左侧过滤菜单),我正在使用javascript来做到这一点。
我遇到的问题是,在以下代码行中
<ol class="select">
<li data-value="date">Data</li>
<li data-value="rank">Popolarità</li>
</ol>
var nav = $('#nav');
var selection = $('.select');
var select = selection.find('li');
select.click(function(event) {
$(window.location).attr('href', document.location.href+"?ord=" + $(this).attr('data-value'));
});
当我点击“日期”时一切正常,网址变化正常,但当我点击“排名”时,网址成为第一个ord +第二个ord
我想这样做:
我想要,如果我的url是url.php它变成了url.php?参数,但是如果我进入url.php?参数并且我点击另一个li标签,则url变为url.php?secondparameter所以首先是切割,第二个是更换。
我该怎么做?
非常感谢,
亚历
答案 0 :(得分:0)
问题是你的document.location.href已经包含了之前选择的数据。在添加新参数之前,您必须删除旧参数。
而不是使用
document.location.href
你应该使用
var old_url = document.location.href;
var url = old_url.substring(0, old_url.indexOf('?'));
如果你这样做:
window.location = url +"?ord=" + $(this).attr('data-value');
在添加新的ord之前,将从网址中删除之前的ord。
答案 1 :(得分:0)
以下这些对您有用吗?
select.click(function(event) {
window.location = '?ord='+$(this).data('value');
});
最好只修改window.location.search
:
select.click(function(event) {
window.location.search = '?ord='+$(this).data('value');
});
答案 2 :(得分:0)
您只需修改document.location.search
;只包含URL的查询部分。
答案 3 :(得分:0)
您正在尝试更改查询字符串,为什么不像这样覆盖查询字符串:
window.location.search = "?ord=" + $(this).attr('data-value');