代码还能优化吗?

来源:7-8 编程练习

手撕包菜1

2019-10-06 13:56:15

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
<title>Document</title>
    <script type="text/javascript" src="1-7-8.js"></script>
</head>
<body onload="address()">
<form>
省份:
<select name="province" id="province" onchange="linkage()"></select>
市/区:
<select name="city" id="city" onchange="linkage()"></select>
</form>
</body>
</html>

function address(){
    var province=document.getElementById("province");
    var city=document.getElementById("city");
    var arrayProvince=new Array("北京市","天津市","河北省","河南省");
    var arrayCity1=new Array("朝阳区","西城区");
    for(var i in arrayProvince){
    	selectAdd(province,arrayProvince[i],arrayProvince[i]);

    }
    for(var i in arrayCity1){
    	selectAdd(city,arrayCity1[i],arrayCity1[i]);
    }
}
function selectAdd(obj,name,value){
	obj.options.add(new Option(name,value));
}
function linkage(){
	var arrayCity1=new Array("朝阳区","西城区");
    var arrayCity2=new Array("西青区","武清区");
    var arrayCity3=new Array("石家庄","邯郸市");
    var arrayCity4=new Array("郑州市","开封市");
	var province=document.getElementById("province");
    var city=document.getElementById("city");
    var pro=province.value;

    if(pro=="北京市"){
    	city.length=0;
    	for(var i in arrayCity1){
    		selectAdd(city,arrayCity1[i],arrayCity1[i]);
    	}
    }else if(pro=="天津市"){
    	city.length=0;
    	for(var i in arrayCity2){
    		selectAdd(city,arrayCity2[i],arrayCity2[i]);
    	}
    }else if(pro=="河北省"){
    	city.length=0;
    	for(var i in arrayCity3){
    		selectAdd(city,arrayCity3[i],arrayCity3[i]);
    	}
    }else{
    	city.length=0;
    	for(var i in arrayCity4){
    		selectAdd(city,arrayCity4[i],arrayCity4[i]);
    	}
    }
}


写回答

1回答

好帮手慕小班

2019-10-07

同学你好,在贴出代码中,html页面中,city不需要再添加onchange事件啦,因为在linkage事件在省份改变的时候,触发就可以啦,而不需要在市区的select中再次触发啦。

如贴出代码的运行,是不能正常选择市区的,因为当选择市区后触发onchange事件,造成了数据的刷新,就不会选择啦。

    省份的添加完成的很棒,继续加油。

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

0

0 学习 · 9666 问题

查看课程