正确的代码如下,就是不理解为什么是options[length],
<html>
<head></head>
<title>省市县关联菜单</title>
<script>
function Dsy()
{
this.Items = {};
}
Dsy.prototype.add = function(id,iArray)
{
this.Items[id] = iArray;
}
Dsy.prototype.Exists = function(id)
{
if(typeof(this.Items[id]) == "undefined") return false;
return true;
}
var dsy = new Dsy();
dsy.add("0",["安徽","北京","福建"]);
dsy.add("0_0",["安庆","蚌埠","巢湖","池州","滁州","阜阳","合肥","淮北","淮南","黄山","六安","马鞍山","宿州","铜陵","芜湖","宣城","亳州"]);
dsy.add("0_0_0",["安庆市","怀宁县","潜山县","宿松县","太湖县","桐城市","望江县","岳西县","枞阳县"]);
dsy.add("0_0_1",["蚌埠市","固镇县","怀远县","五河县"]);
dsy.add("0_0_2",["巢湖市","含山县","和县","庐江县","无为县"]);
dsy.add("0_1",["北京"]);
dsy.add("0_1_0",["北京市","密云县","延庆县"]);
dsy.add("0_2",["福州","龙岩","南平","宁德","莆田","泉州","三明","厦门","漳州"]);
dsy.add("0_2_0",["长乐市","福清市","福州市","连江县","罗源县","闽侯县","闽清县","平潭县","永泰县"]);
dsy.add("0_2_1",["长汀县","连城县","龙岩市","上杭县","武平县","永定县","漳平市"]);
dsy.add("0_2_2",["光泽县","建阳市","建瓯市","南平市","浦城县","邵武市","顺昌县","松溪县","武夷山市","政和县"]);
dsy.add("0_2_3",["福安市","福鼎市","古田县","宁德市","屏南县","寿宁县","霞浦县","周宁县","柘荣县"]);
function change(v){
var str="0";
alert(v);//一个
for(i=0;i<v ;i++){ str+=("_"+(document.getElementById(s[i]).selectedIndex-1));};
alert(str);//2个
var ss=document.getElementById(s[v]);
alert(ss.value);
with(ss){
length = 0;
options[0]=new Option(opt0[v],opt0[v]);
alert(options[0].value);//3个
if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v)
{
alert(v);//4个
if(dsy.Exists(str)){
ar = dsy.Items[str];
alert(ar);
for(i=0;i<ar.length;i++) {
options[length]=new Option(ar[i],ar[i]); //!!!!***********options[length]在这里
}
if(v)options[1].selected = true;
}
}
if(++v<s.length)
{
change(v);
}
}
}
var s=["province","city","district"];
var opt0 = ["省份","地级市","市、县级市、县"];
function setup()
{
for(i=0;i<s .length-1;i++)
document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
change(0);
}
</script>
<body bgcolor="#E0E0E0" onload="setup()">
多级关联菜单:
<form name="frm">
<select id="province"><option>省份</option></select>
<select id="city"><option>地级市</option></select>
<select id="district"><option>市、县级市、县</option></select>
</form>
</body>
</html>
请问各位老师,options[length] =new Option(ar[i],ar[i])这句话中为什么不是options[i]=new Option(ar[i],ar[i])?按照我的理解是,每一次for循环都新建了一个select选项,如果options[]里面是length的话,那么每次都新建的是options最后一个选项,而没有建前面的那几个。麻烦哪位老师解释一下,或者指点一下options[]真正的含义,是不是我对着它有错误的理解。还有with()的作用是什么?谢谢。