2013-04-29 3 views
0

Привет,Выпадающее значение потеряно после перезагрузки страницы

<select id="SelectLanguage" name="SelectLanguage" onchange="refreshpagehtml();"> 
<script type="text/javascript"> 
var PreferredLanguageValues = PreferredLanguageValues(); 
var sel = document.getElementById('SelectLanguage'); 
for(var i = 0; i < PreferredLanguageValues.length; i++) { 
var NameValuePair=PreferredLanguageValues[i].split(":"); 
var opt = document.createElement('option'); 
opt.innerHTML = NameValuePair[0]; 
opt.value = NameValuePair[1]; 
sel.appendChild(opt); 
} 
</script> 
</select> 

Используя описанную выше логику страницы HTML для выпадающего меню. Выпадающие значения берутся из функции PreferredLanguageValues ​​() из JS-файла.

function PreferredLanguageValues() 
{ 
var values = new Array(); 
//Add Language - Display:Language_CountryCode 
values[1] = "English:en_US"; 
values[2] = "French:fr_FR"; 
values[3] = "Chinese:zh_CN"; 
values[4] = "Arabic:ar_SA"; 
values[5] = "Russian:ru_RU"; 
values[6] = "Spanish:es_ES"; 
values[7] = "Portugese:pt_BR"; 
return values; 
} 

Логика такова, что при изменении выпадающего значения страница перезагружается. Перезагруженная страница не отображает выбранное значение выпадающего списка. В раскрывающемся списке всегда отображается английский. Может ли кто-нибудь помочь мне в этом отношении. Спасибо.

+0

Как вы можете определить, какой язык выбран пользователем? Это параметр строки запроса/значение cookie? Почему список заполняется JavaScript, а не JSP? –

ответ

0

Кажется, что вам не нужно повторно загружать страницу. Вы знакомы с AJAX? Это позволяет «запросить» вашу страницу jsp, чтобы получить список значений без повторной загрузки страницы.

Прочитать обзор here at MDN.

Или, если я пропустил отметку, отправьте функцию refreshpagehtml(), которую вы вызываете.

+0

function refreshpagehtml() {var Plang = document.getElementById ("SelectLanguage"). Value; SetCookie ("localeCookie", Plang, 0); alert («внутреннее обновление» + Plang); var path = window.location.pathname; var file = path.split ("/"); var filename = file [file.length-1]; var contextroot = file [1]; alert ("filename" + filename); if (Plang == "en_US") window.location = "/" + contextroot + "/" + имя_файла; else window.location = "/" + contextroot + "/" + Plang + "/" + имя файла; } – user2265898

0

В чем причина перезагрузки страницы? Вам не нужно перезагружать. Если вы хотите, чтобы перезагрузить страницу, то вы можете поместить выбранный элемент в печенье или HTML 5 локального хранения и извлечения их обратно и сбросить в раскрывающемся списке Выбранное значение

+0

Я полагаю, что страница должна быть перезагружена на выбранном языке. –

1

У вас есть некоторые ошибки:

1) Ваш индекс массива ДОЛЖЕН ЗАПУСТИТЬ в 0, если нет, измените ваш for(), чтобы начать с 1. Это путем исключения в for, потому что он пытается выполнить разделение в объекте undefined.

2) В строке:

var PreferredLanguageValues = PreferredLanguageValues(); 

у вас есть ошибка, потому что вы назвали как ВАР с тем же именем, изменить название вара или функции.

3) (необязательно) Убедитесь, что функция PreferredLanguageValues ​​() перед загрузкой элементов DOM объявлена, потому что если элемент DOM не существует, вы никогда не увидите параметры.

Я заставляю его работать с этими изменениями, я надеюсь, что эта помощь.

Смежные вопросы