使用javascript中读取Xml文件做成的一个二级联动菜单

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>menu2level.html</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script type="text/javascript">
		function loadXML(){
		var xmlDoc;
			try{
			//IE
			 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
			}catch(e){
				try{
				xmlDoc = document.implementation.createDocument("","",null);
				}catch(e){
				alert(e.message);
				return;
				}
			}
			xmlDoc.async=false;
			xmlDoc.load("cities.xml");
			return xmlDoc;
		}
		//网页加载完在加载  完成省份加载
		οnlοad=function(){
			var xmlDocument = loadXML();
			var provinceArr =xmlDocument.getElementsByTagName("province");
			var proSize = provinceArr.length;
			for(var i=0;i<proSize;i++){
				//创建option节点
				var optionElement = document.createElement("option");
				var provinceName = provinceArr[i].getAttribute("name");
				//创建文本节点
				var textElement =document.createTextNode(provinceName);
				optionElement.appendChild(textElement);
				optionElement.setAttribute("value", provinceName);
				var node = document.getElementById("province");
				node.appendChild(optionElement);
			}   
		}
		//省份改变事件
		function changeProvince(node){
			//获取选择的角标
			var index = node.selectedIndex;
			//获取对应的省份名
			var provinceName = node.options[index].value;
			loadCities(provinceName);
		}
		
		//根据省份编号加载城市信息
		function loadCities(proName){
			var xmlDocument = loadXML();
			var provinceArr =xmlDocument.getElementsByTagName("province");
			//获取城市的元素
			var citySelectEle = document.getElementById("cities");
			var size = citySelectEle.options.length;
			for(var i=size;i>0;i--){
				citySelectEle.remove(i);
			}
			
			//获取省份的个数
			var proSize = provinceArr.length;
			var proElement;
			//获取对应的省份元素
			for(var i=0;i<proSize;i++){
				if(provinceArr[i].getAttribute("name")==proName){
					proElement = provinceArr[i];
					break;
				}
			}
			//获取省份的城市信息
			var citiesArr = proElement.getElementsByTagName("city");
			var len = citiesArr.length;
			for(var i=0;i<len;i++){
				//创建option节点
				var optionElement = document.createElement("option");
				//获取城市名
				var cityName = citiesArr[i].firstChild.nodeValue;
				//创建文本节点
				var textElement =document.createTextNode(cityName);
				optionElement.appendChild(textElement);
				optionElement.setAttribute("value", cityName);
				citySelectEle.appendChild(optionElement);
			}   
		}
		function getValue(){
			var pro = document.getElementById("province").value;
			var city = document.getElementById("cities").value;
			alert(pro+":"+city);
		}
    </script>
  </head>
  
  <body>
  <select id="province" οnchange="changeProvince(this)">
  	<option value="" selected="selected">--省份--</option>
  </select>
  <select id="cities">
  	<option value="" selected="selected">--城市--</option>
  </select>
  <input type="button" value="弹出" οnclick="getValue()"/> 
  </body>
</html>

 

效果如下:

  

cities.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
	<province name="陕西">
		<city>西安</city>
		<city>汉中</city>
		<city>宝鸡</city>
		<city>延安</city>
	</province>
	<province name="广东">
		<city>佛山</city>
		<city>深圳</city>
		<city>广州</city>
		<city>汕头</city>
	</province>
	<province name="辽宁">
		<city>大连</city>
		<city>铁岭</city>
		<city>鞍山</city>
		<city>抚顺</city>
	</province>
</xml-body>



 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值