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 页面中使用上述逻辑作为下拉菜单。下拉值取自 JS 文件中的 PreferredLanguageValues() 函数。

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;
}

逻辑是这样的,当我更改下拉值时,页面会重新加载。重新加载的页面不显示选定的下拉值。它总是在下拉菜单中显示英语。任何人都可以在这方面帮助我。谢谢。

4

3 回答 3

1

你有一些错误:

1)您的数组索引必须从 0 开始,如果不是,请修改您的 for() 以从 1 开始。这是通过 for 中的异常进行的,因为它试图在未定义的对象中进行拆分。

2) 在行中:

var PreferredLanguageValues = PreferredLanguageValues();  

你有一个错误,因为你用相同的名称命名两个变量,更改变量或函数的名称。

3)(可选)验证您是否在加载 DOM 元素之前声明了函数 PreferredLanguageValues(),因为如果 DOM 元素不存在,您将永远看不到选项。

我让它与这些变化一起工作,我希望这会有所帮助。

于 2013-04-29T08:03:58.267 回答
0

看来您不需要重新加载页面。你熟悉 AJAX 吗?这允许“查询”您的 jsp 页面以获取值列表,而无需重新加载页面。

在 MDN 上阅读概述。

或者,如果我错过了标记,请发布您正在调用的 refreshpagehtml() 函数。

于 2013-04-29T07:53:17.363 回答
0

重新加载页面的原因是什么?你不需要重新加载。如果您想重新加载页面,则可以将所选项目放在 cookie 或 HTML 5 本地存储中,然后将它们取回并重置下拉选择值

于 2013-04-29T08:01:49.713 回答