老师帮忙看下,第一次预览界面,北京市后面会出现所有的城市,要点击其他省份后,联动才正常。
来源:7-8 编程练习
vic_yang
2019-12-06 18:37:12
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>document</title> <script type="text/javascript" src="city.js"></script> </head> <body> <body onload="address()"> <form> 省份: <!-- 请在此补充代码 --> <select name="pro" id="pro" onchange="changePc()"></select> 市/区: <!-- 请在此补充代码 --> <select name="city" id="city" ></select> </form> </body> </body> </html>
function address(){
/*请在此补充代码*/
var pro = document.getElementById("pro");
var city= document.getElementById("city");
var arrayPro = new Array("北京市","天津市","河北省");
var arrayCity = new Array("朝阳区","海淀区","开封市","西青区","邯郸市");
for(var a=0;a<=arrayPro.length-1;a++){
selectAdd(pro,arrayPro[a],arrayPro[a]);
}
for(var i=0;i<=arrayCity.length-1;i++){
selectAdd(city,arrayCity[i],arrayCity[i]);
}
}
function selectAdd(obj,name,value){
/*请在此补充代码*/
obj.options.add(new Option(name,value));
}
function changePc(){
var pro = document.getElementById("pro");
var city= document.getElementById("city");
var array1=null;
if(pro.value=="北京市"){
array1=new Array("朝阳区","海淀区");
}else if(pro.value=="河北省"){
array1=new Array("开封市","邯郸市");
}else if(pro.value=="天津市"){
array1=new Array("西青区");
}
city.options.length=0;
for(var i=0;i<=array1.length-1;i++){
selectAdd(city,array1[i],array1[i]);
}
}1回答
同学你好,因为这里onchange事件表示内容发生改变的时候会触发该事件,所以当加载页面后,一级菜单初始值为北京市,再点击北京市,内容没有发生改变,所以不会触发onchange事件,也就不会执行changePc()函数。
所以建议当加载页面完就加载address()和changePc()函数。保证页面加载完就可以获取到省份的值,来进行二级联动的判断。
具体如下:

代码如下:
<body onload="address(); changePc()">
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题