作业 7-8

来源:7-8 编程练习

jia_蛙

2019-10-12 09:26:10

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>省市二级联动</title>
<script type="text/javascript" src="index3.js"></script>
</head>
<!-- onload:页面加载时会触发 优先于body内容的加载 -->
<body onload="address()">
省份:
<!-- onchange:改变事件,当下拉框改变时,就会执行 linkage()函数 -->
<select name="province" id="province" onchange="linkage()"></select>
市/区:
<select name="downtown" id="downtown" onchange="linkage()"></select>
</body>
</html>
function address(){
	//分别获取id为 province、downtown的省市对象
    var province =	document.getElementById("province");
    // 定义省份和市区数组
    var provinces = ["北京市","天津市","河北省","河南省"];
   

    selectAdd(province,provinces);
    //linkage();
    //地区省份较多的情况下 我们应该让最中间的市区显示出来
    var avg = province.length;
    province.selectedIndex = Math.round(avg/2);
    //应该在设置完默认值之后再调用联动方法,否则会出现默认省份与市区不对应
    linkage();
}
// 给表单元素赋值,传递四个参数:表单元素对象 、省份市区数组
function selectAdd(obj,pdArray){
		/*请在此补充代码*/  
		for(var i=0;i<pdArray.length;i++){
			//给obj表单元素添加一个Option条目
			obj.options.add(new Option(pdArray[i],pdArray[i]));
		}
}


function linkage(){
	/*请在此补充代码*/ 
	var province =	document.getElementById("province");
  var downtown =  document.getElementById("downtown");
  var provinceName = province.value;
	var downtowns = [["朝阳市","西城区"],["西青区","武清区"],
    				["石家庄","邯郸市"],["郑州市","开封市"]];

  	switch(provinceName){
  		case "北京市":
  			//把市级内容删除 然后重新设置
  			downtown.options.length=0;
  			selectAdd(downtown,downtowns[0]);
  			break;
  		case "天津市":
  			downtown.options.length=0;
  			selectAdd(downtown,downtowns[1]);
  			break;
  		case "河北省":
  			downtown.options.length=0;
  			selectAdd(downtown,downtowns[2]);
  			break;
  		case "河南省":
  			downtown.options.length=0;
  			selectAdd(downtown,downtowns[3]);
  			break;
  	}
}
老师 我这里function selectAdd(obj,name,value){   只用到了两个参数 因为我的name 和value都是值一样,所以我就改成数组,我这样可以吗 ?
   还有如果我想按照   function selectAdd(obj,name,value){	} 这样改怎么修改?
   还麻烦老师看一下 我的注释 有没有需要错误的 哪里还可以优化的。 谢谢


写回答

1回答

好帮手慕珊

2019-10-12

你好!如下图所示,关于你的第一个问题,用到两个参数是可以的。

关于第二个问题,如果要使用三个参数,那么在selectAdd()方法中因为传输的数据不是数组,而是数组元素的值,因此就不用循环了。但是在case语句后面调用selectAdd()方法时就要加循环了。建议还是你现在这么使用,不用修改了。

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

其他地方没什么问题,代码是符合练习要求的。

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

0

0 学习 · 9666 问题

查看课程

相似问题

7-8编程练习

回答 1

7-6 编程练习

回答 1

7-8编程

回答 1

7-8编程练习

回答 2

7-8编程练习

回答 1