DOM(三)-05-(示例-下拉菜单-选择城市)

<!--
下拉菜单:选择城市
二级联动菜单,即在第一级下拉菜单先选择xx省,然后第二级下拉菜单自动跳转当前所选省的所有城市,再选择xx市
-->

<html>
	<head>
		<style type="text/css">
			select{/*标签选择器*/
				width:100px;
			}
		</style>
	</head>
	<body>
		<script type="text/javascript">
		
			function selectCity(){
				
				/*
				 *由于第一级菜单的一个option对应第二级菜单的多个option,比如第一级菜单中的北京,在第二级菜单中有
				 *海淀区==多个可选项目,所以用二维数组,即大数组里面的第一个小数组代表一个省,该小数组里面的内容
				 *代表该省里的几个区,因为第一级select中有5个option,所以大数组里面5个小数组
				 */
				var collCities = [['选择市区']
									,['海淀区','朝阳区','东城区','西城区']
									,['南京','扬州','苏州','无锡']
									,['江宁区','栖霞区','鼓楼区','白下区']
									,['市区','江都','仪征','宝应']];
				/*
				 *这里同样可以键值对方式存储,更直观,如:
				 *var arr = {"beijing":['海淀区','朝阳区','东城区','西城区']};
				 *如果这样封装,要在对应option里面添加value="beijing"
				 */
				
				 //获取两个select节点对象
				 var oSelectNode = document.getElementById("selectid");//第一级下拉菜单对象
				 var oSubSelectNode = document.getElementById("subselectid");//第二级下拉菜单对象
				 
				 //获取第一级下拉菜单到底选择的是哪个option
				 var index = oSelectNode.selectedIndex;//【注意】index从0开始,即本程序中“北京“所在的option编号是1
				 
				 //通过角标去容器中获取对应的省市数组
				 var arrCities = collCities[index];
				 
				 /*
				  *为了防止下面不断添加新元素,即选择“北京”,子菜单出现北京的4个区,然后选择“江苏”,子菜单中不仅有江苏的
				  *4个城市,还有北京的4个区,所以必须在这里做删除动作,即每次在往子菜单里面添加新元素之前必须先清空子菜单中
				  *的元素。且子菜单中的第一个“选择市区”option不删除。
				  */
				  /*该方法可以实现删除子菜单中option的效果(第一个option不删除,如要删除,将循环初值x置为0即可)
				  for(var x=1;x<oSubSelectNode.options.length;x++){
					  
					  oSubSelectNode.removeChild(oSubSelectNode.options[x]);
					  x--;//这里x--的原因详见35-DOM-01
				  }
				 */
				 
				 //以下方法更简单,直接将子菜单长度置为1,即只保留第一个option
				 oSubSelectNode.length = 1;
				 
				 //遍历这个数组,并将这个数组的元素封装成option对象,添加到子菜单中
				 for(var x=0;x<arrCities.length;x++){
					 
					 var oOptionNode = document.createElement("option");
					 oOptionNode.innerHTML = arrCities[x];
					 oSubSelectNode.appendChild(oOptionNode);
				 }
			}
		
		</script>
		
		<select id="selectid" οnchange="selectCity()">
			<option>选择城市</option>
			<option>北京</option>
			<option>江苏</option>
			<option>南京</option>
			<option>扬州</option>
		</select>
		
		<select id="subselectid">
			<option>选择市区</option>
		</select>
	</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
版本:v1.2 ----------------------------------------------- (C) Oran Day(likecode#gmail.com) ----------------------------------------------- ----------------------------------------------- 文件夹说明: - ChinaRegions_Complained 已编译后的dll - ChinaRegions_Source - 服务器控件源码项目 - html - 演示代码级源测试代码 ----------------------------------------------- ----------------------------------------------- ChinaRegion 文件名:OranChinaRegion.dll 自我说明XML:OranChinaRegion.XML 描述: 中国行政区域二级联系菜单,根据上级行政区加载下级行政区列表 XML数据驱动,可自定义添加、删除,简易更新 支持回发恢复状态,已正确设定行政区可自动选定和加载各级行政区数据 其它说明: 应用网站必须存在行政区域的数据XML文件,默认放于应用页面同级目录的oran/regions下,其中regions.xml为一级行政区数据,其它均为二级行政区数据 可自定义修改XML目录,在web.config/appSettings/ChinaRegionXmlFolderPath 配置,e.g.:/oran/regions 创建实例至少指定 runat 和 ID 属性。 应用: 1.为网站添加DLL引用 引用OranChinaRegion.dll 2.复制XML文件至网站 3.注册控件 e.g.: 4.在您期望的位置插入该控件, e.g.: 5.获取值 ParentRegion 获取或设置一级行政区 ChildRegion 获取或设置二级行政区 e.g: string parRgn = region1.ParentRegion; if (parRgn.Length > 0) Response.Write("您选择的是:" + parRgn); string chdRgn = region1.ChildRegion; if (chdRgn.Length > 0) Response.Write(" - " + chdRgn); 6.减少网络传输量,提高网络传输效率,您可以将XML压缩再应用于实际网站。 7.更多参数请参考自我说明XML。 8.期待您报告BUG:)。 -----------------------------------------------

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值