老师帮忙看下,第一次预览界面,北京市后面会出现所有的城市,要点击其他省份后,联动才正常。

来源: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回答

好帮手慕酷酷

2019-12-06

同学你好,因为这里onchange事件表示内容发生改变的时候会触发该事件,所以当加载页面后,一级菜单初始值为北京市,再点击北京市,内容没有发生改变,所以不会触发onchange事件,也就不会执行changePc()函数。

所以建议当加载页面完就加载address()和changePc()函数。保证页面加载完就可以获取到省份的值,来进行二级联动的判断。

具体如下:

http://img.mukewang.com/climg/5dea3698098abc8f05190107.jpg

代码如下:

<body onload="address(); changePc()">

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 9666 问题

查看课程