我有一个小的JavaScript问题;我想重新加载带有选定语言选项值的页面作为get变量。
如果我选择EN语言,页面重新加载& lang = EN,
我的问题是我使用concat所以得到my_url&lang=EN&lang=FR&lang=SP
...
所以当我选择第一个EN然后FR我希望得到my_url&lang=FR
而不是my_url&lang=EN&lang=FR
我想替换lang变量,不仅要添加:
<select onchange="javascript:handleSelect(this)">
<option>DE</option>
<option>EN</option>
<option>FR</option>
<option>SP</option>
<option>NL</option>
<option>HR</option>
<option>PL</option>
<option>CZ</option>
</select>
<script type="text/javascript">
function handleSelect(elm)
{
window.location = window.location.href +"?lang="+elm.value;
}
</script>
答案 0 :(得分:0)
您可以使用
var currAddress = window.location.href;
var indexOfLang = currAddress.indexOf('lang=');
var tempAddress = currAddress.substring(indexOfLang, indexOfLang+7);
currAddress = currAddress.replace(tempAddress,'lang='+elm.value);
window.location = currAddress;
数字7是子串的长度 - lang = EN。
答案 1 :(得分:0)
试
window.location = window.location.pathname +"?lang="+elm.value;
答案 2 :(得分:0)
您可以使用替换功能:
window.location = window.location.href.match(/lang=/) ? window.location.replace( /lang=(.*){2}/, 'lang=' + elm.value ) : window.location.href + '?lang=' + elm.value;
参考:http://www.w3schools.com/jsref/jsref_replace.asp
如果存在?lang=
,请将其替换为新的window.location.pathname
。
如果没有,只需添加lang参数。
修改的
我喜欢Dave Pile的var loc = 'http://test.de/?foo=bar'; // window.location.href;
var seperator = loc.match(/\?/) ? '&' : '?';
var elm = 'DE';
var url = loc.match(/lang/) ? loc.replace(/lang=(.*){2}/, 'lang' + elm ) : loc + seperator + 'lang=' + elm;
document.getElementById('result').innerHTML = url;
解决方案,这应该比检查和替换更好的东西更好。
EDIT2
<div id="result"></div>
&#13;
loc
&#13;
请看这个代码段,您必须更改var url
以使其正常工作,同时将window.location
更改为elm
并将?
更改为您的语言元素。
检查参数是否存在并将分隔符从&
更改为{{1}},如果没有设置lang,它将设置它,或者如果设置了lang,它将替换它。
答案 3 :(得分:0)
试试这个:
function handleSelect(elm)
{
var href = window.location.href;
if (href.indexOf("lang") > -1)
{
href = href.replace(/(lang)=\w+((?=[&])|)/, "lang="+elm.value);
}
else
{
var char = (href.indexOf("?") == -1 ? "?" : "&");
href+= char + "lang=" + elm.value;
}
window.location.href = href;
}
它应该适用于保留params的任何类型的URL。
Fiddle。在小提琴中我使用的是div
而不是window.location
。
答案 4 :(得分:0)
function handleSelect(elm)
{
var href = window.location.href;
if (href.indexOf("lang") > -1)
window.location.href = href.replace(/(lang)=\w+((?=[&])|)/, "lang="+elm.value);
else
window.location = window.location.href +"&lang="+elm.value;
}