javascirpt解析xml并实现省市二级联动

Code:
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <cities>  
  3.     <province name="北京">  
  4.         <city>大兴</city>  
  5.         <city>昌平</city>  
  6.         <city>朝阳</city>  
  7.         <city>海淀</city>  
  8.         <city>东城</city>  
  9.         <city>西城</city>  
  10.     </province>  
  11.     <province name="河北">  
  12.         <city>石家庄</city>  
  13.         <city>保定</city>  
  14.         <city>邢台</city>  
  15.         <city>张家口</city>  
  16.         <city>廊坊</city>  
  17.         <city>承德</city>  
  18.     </province>  
  19.     <province name="河南">  
  20.         <city>郑州</city>  
  21.         <city>安阳</city>  
  22.         <city>平顶山</city>  
  23.         <city>开封</city>  
  24.         <city>商丘</city>  
  25.         <city>洛阳</city>  
  26.     </province>  
  27.   
  28. </cities>  
Code:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html>  
  3.   <head>  
  4.     <title>city.html</title>  
  5.        
  6.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  7.     <meta http-equiv="description" content="this is my page">  
  8.     <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  9.        
  10.     <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  
  11.   
  12.   </head>  
  13.      
  14.   <body>  
  15.     <span>  
  16.     <select id="province">  
  17.         <option>请选择省份</option>  
  18.     </select>  
  19.     <select id="cities">  
  20.         <option>请选择市份</option>  
  21.     </select>  
  22.     </span>  
  23.   </body>  
  24. </html>  
  25. <script type="text/javascript">  
  26.     window.onload = function(){   
  27.         var xmlDom;   
  28.         try{   
  29.             //针对的是IE浏览器 创建一个空的微软 XML 文档对象   
  30.             xmlDom=new ActiveXObject("Microsoft.XMLDOM");   
  31.                
  32.         }catch(e){   
  33.            
  34.           try{   
  35.              
  36.             xmlDom=document.implementation.createDocument("","",null);   
  37.                
  38.             }catch(rt){   
  39.                
  40.                 alert("加载错误");   
  41.                    
  42.             }   
  43.         }   
  44.         //关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行   
  45.         xmlDom.async ="false";   
  46.         //解析器加载名为 "xxx.xml" 的 XML 文档   
  47.         xmlDom.load("city.xml");   
  48.         //获取xml文件的根节点   
  49.         var root = xmlDom.documentElement;//cities   
  50.         //获取根节点下面的省节点   
  51.         var provinces = root.childNodes;   
  52.            
  53.         var province = document.getElementById("province");   
  54.            
  55.         var cities = document.getElementById("cities");   
  56.            
  57.         for(var i=0;i<provinces.length;i++){   
  58.             //获取省节点的name属性的值   
  59.             var name = provinces[i].getAttribute("name");   
  60.             //创建一个option   
  61.             var opt = document.createElement("option");   
  62.             //为option添加文本   
  63.             opt.appendChild(document.createTextNode(name));   
  64.             //添加到父节点中   
  65.             province.appendChild(opt);   
  66.         }   
  67.            
  68.         province.onchange = function(){   
  69.            
  70.             var pro = document.getElementById("province");   
  71.                
  72.             var propros = pro.options;   
  73.                
  74.             var pt = pros[pro.selectedIndex];   
  75.                
  76.             var names = pt.innerHTML;   
  77.                
  78.             for(var i=0;i<provinces.length;i++){   
  79.            
  80.                 var name1 = provinces[i].getAttribute("name");   
  81.                    
  82.                 if(names==name1){   
  83.                        
  84.                     cities.length=1;   
  85.                        
  86.                     var provs = provinces[i];   
  87.                        
  88.                     var citys = provs.childNodes;   
  89.                        
  90.                     for(var j=0;j<citys.length;j++){   
  91.                        
  92.                         var opt1 = document.createElement("option");   
  93.                
  94.                         opt1.appendChild(document.createTextNode(citys[j].firstChild.nodeValue));   
  95.                
  96.                         cities.appendChild(opt1);   
  97.                     }   
  98.                 }   
  99.             }   
  100.         }   
  101.     }   
  102. </script>  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值