Javascript 如果我一直点击页面,URL参数就会不断增加
我的代码基本上会将:Javascript 如果我一直点击页面,URL参数就会不断增加,javascript,html,Javascript,Html,我的代码基本上会将:&lang=en或&lang=fr添加到URL,具体取决于我单击的页面。我的问题是,如果我一直单击页面,URL参数就会不断增加。例如,如果我只单击一次“英语”页面,就会发生这种情况:http://example.com/english/&lang=en(这很好),但是,当我第二次点击“英语”页面时,会发生这样的情况:http://example.com/english/&lang=en&lang=en(这是坏的).应该是这样的:http://example.com/engli
&lang=en
或
&lang=fr
添加到URL,具体取决于我单击的页面。
我的问题是,如果我一直单击页面,URL参数就会不断增加。
例如,如果我只单击一次“英语”页面,就会发生这种情况:
http://example.com/english/&lang=en
(这很好),但是,当我第二次点击“英语”页面时,会发生这样的情况:
http://example.com/english/&lang=en&lang=en
(这是坏的).应该是这样的:
http://example.com/english/&lang=en
另一个重要的例子:
当我点击“英语”页面时,会发生这种情况:
http://example.com/english/&lang=en
(这很好)然后,当我进入“法国”页面时(在我访问了“英语”页面之后),这种情况会发生:
http://example.com/english/&lang=en&lang=fr(这很糟糕)。
应该是这样的:
http://example.com/english/&lang=fr
document.getElementById(“eng”).addEventListener(“单击”,函数(e){
var href=e.target.getAttribute(“href”);
如果(href){
location.href=href+“&lang=en”;
e、 预防默认值();
}
});
document.getElementById(“fr”).addEventListener(“单击”,函数(e){
var href=e.target.getAttribute(“href”);
如果(href){
location.href=href+“&lang=fr”;
e、 预防默认值();
}
});
这是因为这一行代码:
location.href = href + "&lang=en";
href
在本例中返回&lang=en
。
上面的代码行添加到href的现有值上,并将页面转发到该地址
相反,它应该只是设置值,而不是增加值。尝试使用if条件检查更新的URL,然后使用replace方法“清除”:
document.getElementById(“eng”).addEventListener(“单击”,函数(e){
var href=e.target.getAttribute(“href”);
console.log(href)
console.log(href.includes('&lang=en'))
如果(href){
if(href.includes('&lang=en')){
href.replace('&lang=en','')
}
location.href=href+“&lang=en”;
e、 预防默认值();
}
});
document.getElementById(“fr”).addEventListener(“单击”,函数(e){
var href=e.target.getAttribute(“href”);
如果(href){
if(href.includes('&lang=fr')){
href.replace('&lang=fr','')
}
location.href=href+“&lang=fr”;
e、 预防默认值();
}
})
您可以尝试添加以下内容:如果(href.includes(“&lang=fr”){location.href=href-“&lang=fr”+“&lang=en”}
以及尝试更改为其他语言时相应的对应项。您可能正在寻找具有once选项的事件侦听器。在internet上找到了该选项的链接:我该怎么做?我不想清除“页面名称”之后的所有内容在URL中添加&lang,并在其后添加&lang。我希望保持整个URL不变,同时只在其顶部添加&lang的一个实例。我建议您查看javascript中的字符串操作,并找出一种方法来获取URL,直到lang
属性,附加所需的属性值,然后转发到地址.