【发布时间】:2014-08-16 00:14:14
【问题描述】:
我需要显示三个选择菜单来选择州、区和地区。其中第二个选择菜单应基于第一个动态填充,第三个基于第二个动态填充。
为此, 我在Javascriptsource.com 找到了一个,并替换了一些以获得以下内容,
<script>
var districts = new Array();
districts['Tamilnadu'] = new Array('Chennai','Coimbatore','Vellore');
districts['Andhra Pradesh'] = new Array('Hyderabad','Andra 2','Andra 3');
var cities = new Array();
areas['Tamilnadu'] = new Array();
areas['Tamilnadu']['Chennai'] = new Array('Kolathur','Perambur');
areas['Tamilnadu']['Coimbatore'] = new Array('Combatore 1','Coimbatore 2');
areas['Tamilnadu']['Vellore'] = new Array('Vellore 1','Vellore 2');
areas['Andhra Pradesh'] = new Array();
areas['Andhra Pradesh']['Hyderabad'] = new Array('Hyde 1','Hyde 2');
areas['Andhra Pradesh']['Andra 2'] = new Array('Andra2 1','Andra2 2');
areas['Andhra Pradesh']['Andra 3'] = new Array('Andra3 1','Andra3 2');
function setDistrict() {
stateSelect = document.getElementById('state');
districtList = districts[stateSelect.value];
changeSelect('district', districtList, districtList);
setArea();
}
function setArea() {
stateSelect = document.getElementById('state');
districtSelect = document.getElementById('district');
areaList = areas[stateSelect.value][districtSelect.value];
changeSelect('area', areaList, areaList);
}
function changeSelect(fieldID, newOptions, newValues) {
selectField = document.getElementById(fieldID);
selectField.options.length = 0;
for (i=0; i<newOptions.length; i++) {
selectField.options[selectField.length] = new Option(newOptions[i], newValues[i]);
}
}
// The below codes do what?
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
setDistrict();
});
</script>
除了在第二个选择菜单的值更改时没有填充第三个选择菜单之外,它工作正常。
那里出了什么问题,我也想知道这是否适用于所有主要浏览器?
有没有更好的解决方案? 谁能解释最后一段代码(在注释行之后)实际上是做什么的?
提前致谢。
[ 我在 stackoverflow 和其他地方都在寻找答案。但是对于仅使用 javascript 的需求似乎没有任何帮助。 ]
[更新]它现在正在工作。但是它适用于所有浏览器吗?谁能解释一下注释行之后的代码是做什么的?
【问题讨论】:
-
var cities = new Array();是指var areas = new Array();吗?我没有看到你在任何地方声明areas,或在任何地方使用cities。 -
该死!是的,应该是地区而不是城市。谢谢,我去看看。
-
它现在可以工作了,但它在所有浏览器上的工作方式都一样吗..?
-
我想我现在已经完全回答了这个问题,抱歉,我最初错过了关于
onload的内容。
标签: javascript html dynamic drop-down-menu