javascript window.location更新获取数据

时间:2015-04-15 12:29:06

标签: javascript

我有一个小的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>

5 个答案:

答案 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

&#13;
&#13;
<div id="result"></div>
&#13;
loc
&#13;
&#13;
&#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;
    }