我需要在选择框更改时重新加载页面。我的解决方案效果很好,但是我敢肯定有更优雅的方法可以做到这一点。
主要问题是网址不同。
http://domain.tld/homepage/ 德国 /隐私
域germany
的一部分可以更改。在选择框更改事件中,应使用斜杠将选择框的当前值附加到域,以使url看起来像这样,即
http://domain.tld/homepage/germany/privacy / 4
实际上,我不能仅将当前选择的值附加到onchange事件中,因为那样的话,我将在多个更改事件中获得以下结果:
http://domain.tld/homepage/germany/privacy / 4/60/6
那么,有没有一种更优雅的方法来完成我的函数呢?
function reloadPrivacyPage(language) {
var locationUrl = window.location.pathname;
var locationUrlSplitted = locationUrl.split('/');
locationUrl = '';
for (var key in locationUrlSplitted) {
if(locationUrlSplitted[key].length > 0) {
locationUrl = locationUrl + '/' + locationUrlSplitted[key];
}
if(locationUrlSplitted[key] === 'privacy')
{
break;
}
}
top.location.href='http://' + window.location.host + locationUrl + '/' + language;
}
<form action="index.php?action=change" method="post">
<select id="privavyLanguage" name="privacyLanguage" onchange="reloadPrivacyPage(this.value);">
<option value="0">- Select language -</option>
<option value="4">Deutsch</option>
<option value="6">English</option>
<option value="60">Polski</option>
</select>
</form>