老师,我试了很多种方法,不知道为什么二级联动就是没办法出来,
function address(){
/*请在此补充代码*/
var sf = document.getElementById("sf");
var sq = document.getElementById("sq");
var arraysf = new Array("北京市","天津市","河北省","河南省");
var arraysq = new Array("朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市");
for(var i =0;i<arraysf.length;i++){
selectAdd(sf,arraysf[i],arraysf[i]);
}
for(var j =0;j<arraysq.length;j++){
selectAdd(sq,arraysq[j],arraysq[j]);
}
//initSelect(sf,0,arraysf.length);
// initSelect(sq,0,arraysq.length);
}
// function initSelect(obj,start,end){
// for(var i =start;i<=end;i++){
// selectAdd(obj,arrayObj[i],arrayObj[i]);
// }
// }
function selectAdd(obj,name,value){
/*请在此补充代码*/
obj.options.add(new Option(name,value));
}
function linkage(){
/*请在此补充代码*/
var sf = document.getElementById("sf");
var sq = document.getElementById("sq");
// var sqStart;
// var sqEnd;
switch(arraysf.value){
case "北京市":
selectAdd(sq,arraysq[0],arraysq[0]);
selectAdd(sq,arraysq[1],arraysq[1]);
// sqStart =0;
// sqEnd =1;
// arraysq[sqStart] =arraysq[0];
// arraysq[sqEnd] =arraysq[1];
break;
case "天津市":
selectAdd(sq,arraysq[2],arraysq[2]);
selectAdd(sq,arraysq[3],arraysq[3]);
// sqStart=2;
// sqEnd =3;
// arraysq[sqStart] = arraysq[2];
// arraysq[sqEnd] = arraysq[3];
break;
case "河北省":
selectAdd(sq,arraysq[4],arraysq[4]);
selectAdd(sq,arraysq[5],arraysq[5]);
// sqStart = 4;
// sqEnd =5;
// arraysq[sqStart] =arraysq[4];
// arraysq[sqEnd] =arraysq[5];
break;
case "河南省":
selectAdd(sq,arraysq[6],arraysq[6]);
selectAdd(sq,arraysq[7],arraysq[7]);
// sqStart =6;
// sqEnd =7;
// arraysq[sqStart] = arraysq[6];
// arraysq[sqEnd] =arraysq[7];
break;
default:
break;
}
sq.options.length = 0;
//initSelect(sq,sqStart,sqEnd);
// initSelect(sf,arraysf[0],arraysf.length-1);
// initSelect(sq,sqStart,sqEnd);
}
/*请在此补充代码*/
var sf = document.getElementById("sf");
var sq = document.getElementById("sq");
var arraysf = new Array("北京市","天津市","河北省","河南省");
var arraysq = new Array("朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市");
for(var i =0;i<arraysf.length;i++){
selectAdd(sf,arraysf[i],arraysf[i]);
}
for(var j =0;j<arraysq.length;j++){
selectAdd(sq,arraysq[j],arraysq[j]);
}
//initSelect(sf,0,arraysf.length);
// initSelect(sq,0,arraysq.length);
}
// function initSelect(obj,start,end){
// for(var i =start;i<=end;i++){
// selectAdd(obj,arrayObj[i],arrayObj[i]);
// }
// }
function selectAdd(obj,name,value){
/*请在此补充代码*/
obj.options.add(new Option(name,value));
}
function linkage(){
/*请在此补充代码*/
var sf = document.getElementById("sf");
var sq = document.getElementById("sq");
// var sqStart;
// var sqEnd;
switch(arraysf.value){
case "北京市":
selectAdd(sq,arraysq[0],arraysq[0]);
selectAdd(sq,arraysq[1],arraysq[1]);
// sqStart =0;
// sqEnd =1;
// arraysq[sqStart] =arraysq[0];
// arraysq[sqEnd] =arraysq[1];
break;
case "天津市":
selectAdd(sq,arraysq[2],arraysq[2]);
selectAdd(sq,arraysq[3],arraysq[3]);
// sqStart=2;
// sqEnd =3;
// arraysq[sqStart] = arraysq[2];
// arraysq[sqEnd] = arraysq[3];
break;
case "河北省":
selectAdd(sq,arraysq[4],arraysq[4]);
selectAdd(sq,arraysq[5],arraysq[5]);
// sqStart = 4;
// sqEnd =5;
// arraysq[sqStart] =arraysq[4];
// arraysq[sqEnd] =arraysq[5];
break;
case "河南省":
selectAdd(sq,arraysq[6],arraysq[6]);
selectAdd(sq,arraysq[7],arraysq[7]);
// sqStart =6;
// sqEnd =7;
// arraysq[sqStart] = arraysq[6];
// arraysq[sqEnd] =arraysq[7];
break;
default:
break;
}
sq.options.length = 0;
//initSelect(sq,sqStart,sqEnd);
// initSelect(sf,arraysf[0],arraysf.length-1);
// initSelect(sq,sqStart,sqEnd);
}
请老师帮忙看看是哪里出错了,需要怎么改比较好?谢谢:)
0
收起
正在回答
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 22:39:21
arraysf,arraysq要把定义放在最外面做为全局变量,现在定义在function address中是局部变量,在后面其它函数引用这两变量时没有定义变量,所以无法取得数据.
2. 从网页搭建入门JavaWeb
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星