Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果我一直点击页面,URL参数就会不断增加_Javascript_Html - Fatal编程技术网

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
    属性,附加所需的属性值,然后转发到地址.