老师,我试了很多种方法,不知道为什么二级联动就是没办法出来,
来源:7-8 编程练习
Giggly_girl
2019-10-02 21:52:07
请老师帮忙看看是哪里出错了,需要怎么改比较好?谢谢:)
2回答
同学你好,在switch时,switch的参数应该是sf,而不是arraysf.value。另外sq.options.length=0应该在switch前,如:

另外在address()函数中,建议默认选择北京市对应的市区,如:

修改后的代码:
var arraysf = new Array("北京市","天津市","河北省","河南省");
var arraysq = new Array("朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市");
function address(){
/*请在此补充代码*/
var sf = document.getElementById("sf");
var sq = document.getElementById("sq");
for(var i =0;i<arraysf.length;i++){
selectAdd(sf,arraysf[i],arraysf[i]);
}
for(var j =0;j<2;j++){
selectAdd(sq,arraysq[j],arraysq[j]);
}
}
function selectAdd(obj,name,value){
/*请在此补充代码*/
obj.options.add(new Option(name,value));
}
function linkage(){
/*请在此补充代码*/
var sf = document.getElementById("sf");
var sq = document.getElementById("sq");
sq.options.length = 0;
switch(sf.value){
case "北京市":
selectAdd(sq,arraysq[0],arraysq[0]);
selectAdd(sq,arraysq[1],arraysq[1]);
break;
case "天津市":
selectAdd(sq,arraysq[2],arraysq[2]);
selectAdd(sq,arraysq[3],arraysq[3]);
break;
case "河北省":
selectAdd(sq,arraysq[4],arraysq[4]);
selectAdd(sq,arraysq[5],arraysq[5]);
break;
case "河南省":
selectAdd(sq,arraysq[6],arraysq[6]);
selectAdd(sq,arraysq[7],arraysq[7]);
break;
default:
break;
}
}如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
慕婉清0129613
2019-10-04
arraysf,arraysq要把定义放在最外面做为全局变量,现在定义在function address中是局部变量,在后面其它函数引用这两变量时没有定义变量,所以无法取得数据.
相似问题