运行代码后北京的市区可以正常显示,但切换省份之后,市区就一直为空了,为什么?
<!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); }
2
收起
正在回答
2回答
同学你好,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为空,不能继续执行下去。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
2. 从网页搭建入门JavaWeb
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星