老师,我试了很多种方法,不知道为什么二级联动就是没办法出来,

老师,我试了很多种方法,不知道为什么二级联动就是没办法出来,

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

请老师帮忙看看是哪里出错了,需要怎么改比较好?谢谢:)

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,在switch时,switch的参数应该是sf,而不是arraysf.value。另外sq.options.length=0应该在switch前,如:

http://img1.sycdn.imooc.com//climg/5d9ad191092865d805430273.jpg

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

http://img1.sycdn.imooc.com//climg/5d9ad200091ff7b306370273.jpg

修改后的代码:

 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中是局部变量,在后面其它函数引用这两变量时没有定义变量,所以无法取得数据.

  • 提问者 Giggly_girl #1
    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"); 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; } sq.options.length = 0; } 老师还是不行,切换到天津市后面的,市区就为空了
    2019-10-05 10:01:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师