首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Js兑现省市县三级联动

2012-10-20 
Js实现省市县三级联动 完整源码下载地址:http://download.csdn.net/detail/software0116/4607607JS代码:fu

Js实现省市县三级联动

Js兑现省市县三级联动

 

完整源码下载地址:http://download.csdn.net/detail/software0116/4607607

JS代码:

function getXmlDoc(){var xmlDoc;try{  //给IE浏览器 创建一个空的微软 XML文档对象  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}catch(err){  try{   //在 Firefox及其他浏览器(opera)中的 XML解析器创建一个空的    XML文档对象。    xmlDoc=document.implementation.createDocument("","",null);  }catch(er){   alert("所使用的浏览器版本太低了,该换更新了");  }}//关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行xmlDoc.async=false;//解析器加载名为 "xxx.xml" 的 XML 文档xmlDoc.load("province_city.xml");return xmlDoc;}window.onload=function(){ var xmlDoc=getXmlDoc();//获取xml文件的根节点var root=xmlDoc.documentElement;//获取xml文件的根节点下面的省节点var provinces=root.childNodes; //获取页面中要显示的省、市和县的控件dom对象var sheng=document.getElementById("sheng");var shi=document.getElementById("shi");var xian=document.getElementById("xian");   //遍历所有的省 for(var i=0;i<provinces.length;i++){   //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题(1是元素节Node.ELEMENT_NODE---1 -- 元素节点)  if(provinces[i].nodeType==1){   //创建一个option节点对象   var shengopt=document.createElement("option");   //为option省节点添加文本                shengopt.appendChild(document.createTextNode(provinces[i].getAttribute("value")));   //为option省节点设置属性                shengopt.setAttribute("value",provinces[i].getAttribute("code"));      //添加省到页面dom对象中   sheng.appendChild(shengopt);  }}//当省节点发生改变时 触发事件sheng.onchange=function(){  //获取省节点所有的option对象的集合  var shengs=sheng.options;  //获取选中option对象的selectedIndex(下标值)  var num=shengs.selectedIndex;  //清空市 区     shi.length=0;  xian.length=0;  //根据选中的省获取其value值的内容  即xml文件中的postcode对应的  值  var ppostcode=shengs[num].getAttribute("value");  //遍历所有的省  for(var i=0;i<provinces.length;i++){   //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题(1是元素节点 Node.ELEMENT_NODE---1-- 元素节点)   if(provinces[i].nodeType==1){    //根据省获取其postcode值的内容  即html文件中的value对应的值    var postcode=provinces[i].getAttribute("code");    if(postcode==ppostcode){     //获取省节点的子节点     var cities=provinces[i].childNodes;     //清空     shi.length=0;     //遍历所有的市     for(var i=0;i<cities.length;i++){      //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题(1是元素节点            Node.ELEMENT_NODE    ---1    -- 元素节点)      if(cities[i].nodeType==1){       //创建一个option节点对象       var shiopt=document.createElement("option");       //为option市节点添加文本                shiopt.appendChild(document.createTextNode(cities[i].getAttribute("value")));       //为option市节点设置属性       shiopt.setAttribute("value",cities[i].getAttribute("code"));        //添加市到页面dom对象中       shi.appendChild(shiopt);      }     }     break;    }   }  }}//当市节点发生改变时 触发事件shi.onchange=function(){  //获取市节点所有的option对象的集合  var shis=shi.options;  //获取选中option对象的selectedIndex(下标值)  var num=shis.selectedIndex;  //根据选中的市获取其value值的内容  即xml文件中的postcode对应的  值  var spostcode=shis[num].getAttribute("value");  //遍历所有的省  for(var i=0;i<provinces.length;i++){   //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题(1是元素节点 Node.ELEMENT_NODE---1 -- 元素节点)   if(provinces[i].nodeType==1){    //获取省节点的子节点    var cities=provinces[i].childNodes;    //遍历所有的市    for(var j=0;j<cities.length;j++){     //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题(1是元素节点 Node.ELEMENT_NODE            ---1    -- 元素节点)     if(cities[j].nodeType==1){      //根据市获取其postcode值的内容  即html文件中的value对应的值      var postcode=cities[j].getAttribute("code");      if(postcode==spostcode){       //清空       xian.length=0;       //获取市节点的子节点       var areas=cities[j].childNodes;       //遍历所有的区(县)       for(var k=0;k<areas.length;k++){        //查看该节点是否是元素节点 也是为了实现不同浏览器之间的兼容性问题(1是元素节点          Node.ELEMENT_NODE    ---1    -- 元素节点)        if(areas[k].nodeType==1){         //创建一个option节点对象         var xianopt=document.createElement("option");         //为option区节点添加文本         xianopt.appendChild(document.createTextNode(areas[k].getAttribute("value")));         //为option区节点设置属性         xianopt.setAttribute("value", areas[k].getAttribute("code"));          //添加区到页面dom对象中         xian.appendChild(xianopt);        }       }       break;      }     }    }   }  }}}

HTML代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>city.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <script type="text/javascript" src="provincesCity.js"></script>   </head>  <body>    <select id="sheng" name="sheng" width="25"><option>--请选择--</option></select>    <select id="shi" name="shi" width="25"><option>--请选择--</option></select>    <select id="xian" name="xian" width="25"><option>--请选择--</option></select>  </body></html>


部分XML:

<?xml version="1.0" encoding="gbk"?><country code="86" value="中国"><province code="370000" value="山东省">   <city code="370100" value="济南市">    <county code="370101" value="市辖区"/>    <county code="370102" value="历下区"/>    <county code="370103" value="市中区"/>    <county code="370104" value="槐荫区"/>    <county code="370105" value="天桥区"/>    <county code="370112" value="历城区"/>    <county code="370113" value="长清区"/>    <county code="370124" value="平阴县"/>    <county code="370125" value="济阳县"/>    <county code="370126" value="商河县"/>    <county code="370181" value="章丘市"/>   </city>   <city code="370200" value="青岛市">    <county code="370201" value="市辖区"/>    <county code="370202" value="市南区"/>    <county code="370203" value="市北区"/>    <county code="370205" value="四方区"/>    <county code="370211" value="黄岛区"/>    <county code="370212" value="崂山区"/>    <county code="370213" value="李沧区"/>    <county code="370214" value="城阳区"/>    <county code="370281" value="胶州市"/>    <county code="370282" value="即墨市"/>    <county code="370283" value="平度市"/>    <county code="370284" value="胶南市"/>    <county code="370285" value="莱西市"/>   </city></province></country>




 


 

热点排行