运行代码后北京的市区可以正常显示,但切换省份之后,市区就一直为空了,为什么?
<!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 id="province" onchange="linkage()"></select>
市/区:
<!-- 请在此补充代码 -->
<select id="city"></select>
</form>
</body>
</html>
function address(){
/*请在此补充代码*/
var province = document.getElementById("province");
var city = document.getElementById("city");
var provinceArray = ["北京市", "天津市", "河北省", "河南省"];
var cityArray = ["朝阳区","西城区"];
selectAdd(province,provinceArray);
selectAdd(city,cityArray);
}
function selectAdd(obj,value){
/*请在此补充代码*/
for(var i=0;i<value.length;i++){
obj.options.add(new Option(value[i],i));
}
}
function linkage(){
/*请在此补充代码*/
var province = document.getElementById("province");
var city = document.getElementById("city");
var pv= province.value;
var cityArray;
switch(pv){
case "北京市":
cityArray = ["朝阳区","西城区"];
break;
case "天津市":
cityArray = ["西青区","武清区"];
break;
case "河北省":
cityArray = ["石家庄","邯郸市"];
break;
case "河南省":
cityArray = ["郑州市","开封市"];
break;
}
city.options.length=0;
selectAdd(city,cityArray);
}正在回答
同学你好,1、首先使用switch语句,切换市区后,就报错了,例如:
这个错误是无法读取length属性,这是因为在switch语句中没有与case相匹配的内容,cityArray为空,所以获取到它的length属性就是一个undefined.
2、原因如下:new Option()表示一条具体的条目,里面的参数一个表示在页面中显示的具体内容,一个表示的是它的值,比如:以这个标签为例<option value="123">abc</option>,第一个参数是要显示的内容,也就是这里的abc,第二个标签是value的值。
在同学的代码中obj.options.add(new Option(value[i],i));-->第一个参数是要展示到页面的具体内容,比如:北京市、天津市等,第二个参数是value的值,对应就是i的值,value对应为0、1、2.
所以在switch语句中value的值,也就是pv的值与"北京市"、"天津市"比较,条件不成立,cityArray为空,所以不能执行下去,修改建议如下:

如上value就可以与"北京市"、"天津市"比较啦。
同学将switch语句换成if语句,一样的错误,条件不成立,cityArray为空,不能继续执行下去。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星