PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > JavaScript教程 > 正文

    JavaScript XML省市县三级联动下拉菜单

    作者:admin来源:B5教程网浏览:时间:2020-09-30 00:07:50我要评论
    导读:我介绍一个xml+js实现的省市县三级联动下拉菜单效果,大家可参考。js代码复制代码代码如下:<html><headrunat="server"><title>省市县三级...
    我介绍一个xml+js实现的省市县三级联动下拉菜单效果,大家可参考。
     
     

    js代码
     

     
    复制代码代码如下:
    1. <html>
    2. <head runat="server">
    3.     <title>省市县三级联动菜单</title>
    4.             <script   language="javascript"   type="text/javascript">
    5.   //首先需要初始化
    6.   var   xmlDoc;  
    7.   var   nodeIndex;
    8.   function   getxmlDoc()  
    9.   {  
    10.       xmlDoc=new   ActiveXObject("Microsoft.XMLDOM");  
    11.           var   currNode;  
    12.           xmlDoc.async=false;  
    13.           xmlDoc.load("Area.xml");  
    14.           if(xmlDoc.parseError.errorCode!=0)  
    15.           {  
    16.                   var   myErr=xmlDoc.parseError;  
    17.                   alert("出错!"+myErr.reason);  
    18.           }          
    19.   }
    20.   function Init()
    21.   {
    22.     //打开xlmdocm文档
    23.     getxmlDoc();
    24.     var   dropElement1=document.getElementById("Select1");
    25.     var   dropElement2=document.getElementById("Select2");
    26.     var   dropElement3=document.getElementById("Select3");  
    27.     RemoveDropDownList(dropElement1);
    28.     RemoveDropDownList(dropElement2);
    29.     RemoveDropDownList(dropElement3);
    30.     var  TopnodeList=xmlDoc.selectSingleNode("address").childNodes;
    31.     if(TopnodeList.length>0)
    32.     {
    33.         //省份列表
    34.         var country;
    35.         var province;
    36.         var city;
    37.         for(var   i=0; i<TopnodeList.length;   i++)
    38.         {
    39.               //添加列表项目
    40.               country=TopnodeList[i];      
    41.               var   eOption=document.createElement("option");  
    42.               eOption.value=country.getAttribute("name");
    43.               eOption.text=country.getAttribute("name");
    44.               dropElement1.add(eOption);
    45.         }
    46.         if(TopnodeList[0].childNodes.length>0)
    47.         {
    48.             //城市列表
    49.             for(var i=0;i<TopnodeList[0].childNodes.length;i++)
    50.             {
    51.                var   id=dropElement1.options[0].value;
    52.                //默认为第一个省份的城市
    53.                province=TopnodeList[0];
    54.                var   eOption=document.createElement("option");
    55.                eOption.value=province.childNodes[i].getAttribute("name");  
    56.                eOption.text=province.childNodes[i].getAttribute("name");  
    57.                dropElement2.add(eOption);
    58.             }
    59.             if(TopnodeList[0].childNodes[0].childNodes.length>0)
    60.             {
    61.                //县列表
    62.                for(var i=0;i<TopnodeList[0].childNodes[0].childNodes.length;i++)
    63.                {
    64.                   var   id=dropElement2.options[0].value;
    65.                   //默认为第一个城市的第一个县列表
    66.                   city=TopnodeList[0].childNodes[0];
    67.                   var   eOption=document.createElement("option");
    68.                   eOption.value=city.childNodes[i].getAttribute("name");  
    69.                   eOption.text=city.childNodes[i].getAttribute("name");  
    70.                   this.document.getElementById("Select3").add(eOption);
    71.                }
    72.             }
    73.         }
    74.     }
    75.   }  
    76.   function   selectCity()  
    77.   {       var   dropElement1=document.getElementById("Select1");
    78.           var   name=dropElement1.options[dropElement1.selectedIndex].value;
    79.           //alert(id);
    80.           var   countryNodes=xmlDoc.selectSingleNode('//address/province [@name="'+name+'"]');  
    81.           //alert(countryNodes.childNodes.length);
    82.           var   province=document.getElementById("Select2");      
    83.           var   city=document.getElementById("Select3");      
    84.           RemoveDropDownList(province);  
    85.           RemoveDropDownList(city);
    86.           if(countryNodes.childNodes.length>0)
    87.           {
    88.                //填充城市
    89.                for(var   i=0;   i<countryNodes.childNodes.length;   i++)  
    90.                {  
    91.                   var   provinceNode=countryNodes.childNodes[i];    
    92.                   var   eOption=document.createElement("option");  
    93.                   eOption.value=provinceNode.getAttribute("name");  
    94.                   eOption.text=provinceNode.getAttribute("name");  
    95.                   province.add(eOption);  
    96.                }
    97.                if(countryNodes.childNodes[0].childNodes.length>0)
    98.                {
    99.                   //填充选择省份的第一个城市的县列表
    100.                   for(var i=0;i<countryNodes.childNodes[0].childNodes.length;i++)
    101.                   {
    102.                       //alert("i="+i+"rn"+"length="+countryNodes.childNodes[0].childNodes.length+"rn");
    103.                       var   dropElement2=document.getElementById("Select2");
    104.                       var   dropElement3=document.getElementById("Select3");
    105.                       //取当天省份下第一个城市列表
    106.                       var cityNode=countryNodes.childNodes[0];
    107.                       //alert(cityNode.childNodes.length);
    108.                       var   eOption=document.createElement("option");
    109.                       eOption.value=cityNode.childNodes[i].getAttribute("name");  
    110.                       eOption.text=cityNode.childNodes[i].getAttribute("name");  
    111.                       dropElement3.add(eOption);
    112.                   }
    113.                }
    114.           }
    115.   }  
    116.   function   selectCountry()  
    117.   {  
    118.           var   dropElement2=document.getElementById("Select2");  
    119.           var   name=dropElement2.options[dropElement2.selectedIndex].value;  
    120.           var   provinceNode=xmlDoc.selectSingleNode('//address/province/city[@name="'+name+'"]');
    121.           var   city=document.getElementById("Select3");      
    122.           RemoveDropDownList(city);  
    123.           for(var   i=0;   i<provinceNode.childNodes.length;   i++)  
    124.           {  
    125.                   var   cityNode=provinceNode.childNodes[i];    
    126.                   var   eOption=document.createElement("option");  
    127.                   eOption.value=cityNode.getAttribute("name");  
    128.                   eOption.text=cityNode.getAttribute("name");  
    129.                   city.add(eOption);  
    130.           }  
    131.   }  
    132.   function   RemoveDropDownList(obj)  
    133.   {  
    134.       if(obj)
    135.       {
    136.           var   len=obj.options.length;  
    137.           if(len>0)
    138.           {
    139.             //alert(len);
    140.             for(var   i=len;i>=0;i--)  
    141.             {  
    142.                   obj.remove(i);  
    143.             }
    144.           }
    145.        }
    146.            
    147.   }  
    148.   </script>
    149. </head>
    150. <body onload="Init();">
    151.     <form id="form1" runat="server">
    152.     <div>
    153.     <select id="Select1" name="Select1" runat="server" onchange="selectCity();">
    154.    <option value="" selected="true">/直辖市</option>
    155.  </select>
    156.     <select id="Select2" name="Select2" runat="server" onchange="selectCountry()">
    157.   <option value="" selected="true">请选择</option>
    158.  </select>
    159.     <select id="Select3" name="Select3" runat="server" >
    160.   <option value="" selected="true">请选择</option>
    161.  </select>
    162.     </div>
    163.     </form>
    164. </body>
    165. </html>
     
    xml文件

     
    复制代码代码如下:
    1. <?xml version="1.0" encoding="gb2312" ?>
    2.  <address>
    3.  <province name="北京市">
    4.  <city name="北京辖区">
    5.   <country name="东城区" />
    6.   <country name="西城区" />
    7.   <country name="崇文区" />
    8.   <country name="宣武区" />
    9.   <country name="朝阳区" />
    10.   <country name="丰台区" />
    11.   <country name="石景山区" />
    12.   <country name="海淀区" />
    13.   <country name="门头沟区" />
    14.   <country name="房山区" />
    15.   <country name="通州区" />
    16.   <country name="顺义区" />
    17.   <country name="昌平区" />
    18.   <country name="大兴区" />
    19.   <country name="怀柔区" />
    20.   <country name="平谷区" />
    21.   </city>
    22.  <city name="北京辖县">
    23.   <country name="密云县" />
    24.   <country name="延庆县" />
    25.   </city>
    26.   </province>
    27.  <province name="天津市">
    28.  <city name="天津辖区">
    29.   <country name="和平区" />
    30.   <country name="河东区" />
    31.   <country name="河西区" />
    32.   <country name="南开区" />
    33.   <country name="河北区" />
    34.   <country name="红桥区" />
    35.   <country name="塘沽区" />
    36.   <country name="汉沽区" />
    37.   <country name="大港区" />
    38.   <country name="东丽区" />
    39.   <country name="西青区" />
    40.   <country name="津南区" />
    41.   <country name="北辰区" />
    42.   <country name="武清区" />
    43.   <country name="宝坻区" />
    44.   </city>
    45.    <province name="台湾省" />
    46.   <province name="香港特区" />
    47.   <province name="澳门特区" />
    48.  </address>

    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-69-405-1.html
    相关热词搜索: 联动 下拉菜单