刷新的时候,第一个省份8个市区都跳出来,要选第二个开始才能生效

来源:7-8 编程练习

慕标0359786

2019-12-20 14:53:14

function address(){
    var sheng=document.getElementById("sheng");
    var shi=document.getElementById("shi");
    var shengArray=["北京市","天津市","河北省","河南省"];
    var shiArray=["朝阳区","西城区","西青区","武清区","石家庄","邯郸市","郑州市","开封市"];
    selectAdd(sheng,shengArray);
    selectAdd(shi,shiArray);
}
function selectAdd(obj,name){
		for(var i in name){
			obj.options.add(new Option(name[i],name[i]));
		}  
}
function linkage(){
	var sheng=document.getElementById("sheng");
    var shi=document.getElementById("shi");
	//获取到省份的value值
	var sheng1 = sheng.value;
	//创建城区数组
	var beijinArray=["朝阳区","西城区"];
	var tianjinArray=["西青区","武青区"];
	var hebeiArray=["石家庄","邯郸市"];
	var henanArray=["郑州市","开封市"];
	//判断省份
	if(sheng1=="北京市"){
		shi.options.length=0;
		selectAdd(shi,beijinArray);
		
	}else if(sheng1=="天津市"){
		shi.options.length=0;
		
			selectAdd(shi,tianjinArray);
		
	}else if(sheng1=="河北省"){
		shi.options.length=0;
		
			selectAdd(shi,hebeiArray);
		
	}else{
		shi.options.length=0;
		
			selectAdd(shi,henanArray);
		
	}

}
<!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="sheng" id="sheng" onchange="linkage()"></select>
市/区:
   <select name="shi" id="shi" onchange="linkage()"></select>
</form>
</body>
</html>


写回答

1回答

好帮手慕阿满

2019-12-20

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

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

具体如下:

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

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

1

0 学习 · 9666 问题

查看课程