老师,我实现不了,你帮我看看哪块有问题?如何解决

老师,我实现不了,你帮我看看哪块有问题?如何解决

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

<title>Document</title>

    <script type="text/javascript" src="index.js"></script>

</head>

<body onload="address()">

<form>

省份:

<!--  请在此补充代码 -->

<select name="shengfen" id="shengfen" onchange="linkage()"></select>

市/区:

<!--  请在此补充代码 -->

<select name="shiqu" id="shiqu"></select>

</form>

</body>

</html>

function address(){

    /*请在此补充代码*/  

    var shengfen = document.getElementsByName("shengfen");

    var shiqu = document.getElementsByName("shiqu");

    var arrayShengfen = new Array("北京市","天津市","河北省","河南省");

    var arrayShiqu = new Array("朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市");

    var n = arrayShiqu.length;

    for(var i = 0;i <= arrayShengfen.length;i++){

    selectAdd(shengfen,arrayShengfen[i],arrayShengfen[i]);

    }

    for(var j = 0;j <= arrayShiqu.length;j++){

    selectAdd(shiqi,arrayShiqu[j],arrayShiqu[j]);

    }

}

function selectAdd(obj,name,value){

/*请在此补充代码*/  

obj.options.add(new Option(name,value));

}

function linkage(){

/*请在此补充代码*/  

var shengfen = document.getElementsByName("shengfen");

    var shiqu = document.getElementsByName("shiqu");

    var arrayShiqu = new Array("朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市");

    var sq;

    if(shengfen == "北京市"){

    sq = arrayShiqu[0];

    sq = arrayShiqu[1];

    }else if(shenfen == "天津市"){

    sq = arrayShiqu[2];

    sq = arrayShiqu[3];

    }else if(shengfen == "河北省"){

    sq = arrayShiqu[4];

    sq = arrayShiqu[5];

    }else{

    sq = arrayShiqu[6];

    sq = arrayShiqu[7];

    }

    sq.options.length = 0;

    selectAdd(sq,shiqu,j);

}


正在回答 回答被采纳积分+1

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

2回答
芝芝兰兰 2019-09-01 15:56:25

同学你好。具体有以下几点需要修改:

//1、这两个数组可以提取为全局的变量
var arrayShengfen = new Array("北京市","天津市","河北省","河南省");
var arrayShiqu = new Array("朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市");

function address(){

   //2、通过id来获取元素
    var shengfen = document.getElementById("shengfen");
    var shiqu = document.getElementById("shiqu");
    
    var n = arrayShiqu.length;
    for(var i = 0;i <= arrayShengfen.length;i++){
    	selectAdd(shengfen,arrayShengfen[i],arrayShengfen[i]);
    }
    //3、这需要初始化北京的区市即可
    for(var j = 0;j <= 1;j++){
    	//4、这里变量写错了,进行了修改
    	selectAdd(shiqu,arrayShiqu[j],arrayShiqu[j]);
    }
}

function selectAdd(obj,name,value){
		/*请在此补充代码*/  
		obj.options.add(new Option(name,value));
}

function linkage(){
	 //5、通过id来获取元素
    var shengfen = document.getElementById("shengfen");
    var shiqu = document.getElementById("shiqu");
    //6、获取选中的省份
    var shengfenvalue=document.getElementById("shengfen").value;

    var sq;
     shiqu.options.length = 0;

    if(shengfenvalue == "北京市"){
     selectAdd(shiqu,arrayShiqu[0],arrayShiqu[0]);
     selectAdd(shiqu,arrayShiqu[1],arrayShiqu[1]);
    }else if(shengfenvalue == "天津市"){
     selectAdd(shiqu,arrayShiqu[2],arrayShiqu[2]);
     selectAdd(shiqu,arrayShiqu[3],arrayShiqu[3]);

    }else if(shengfenvalue == "河北省"){
	selectAdd(shiqu,arrayShiqu[4],arrayShiqu[4]);
     selectAdd(shiqu,arrayShiqu[5],arrayShiqu[5]);

    }else{
     selectAdd(shiqu,arrayShiqu[6],arrayShiqu[6]);
     selectAdd(shiqu,arrayShiqu[7],arrayShiqu[7]);

    }



}

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 提问者 慕先生8145006 #1
    为什么选择除了北京以外的省市都不显示市区
    2019-09-01 16:10:06
  • 芝芝兰兰 回复 提问者 慕先生8145006 #2
    同学你好,这边测试并没有出现这个问题,首先仔细核对下自己的代码是否有拼写错误,确定没有,保存之后。可以尝试清空下浏览器缓存,使用快捷键Ctrl+Shift+Delete。然后使用F5刷新页面试一下~祝学习愉快~
    2019-09-01 16:26:56
芝芝兰兰 2019-09-01 15:19:25

同学你好,document.getElementsByName得到的是一个数组,并不是一个Dom对象,此时直接去获取options是获取不到的。将其改为document.getElementById即可

使用document.getElementsByName得到的obj结构如下

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

例如只修改省份这里,效果如下:

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

如果解答了同学的疑问,望采纳~

祝学习愉快~


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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