`
ykyfendou
  • 浏览: 408550 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS省市县三级联动

阅读更多

 

1、Area.html:

 

<html>
<head runat="server">
    <title>源码爱好者-三级地市联动菜单演示_CodeFans.net</title>
            <script   language="javascript"   type="text/javascript">
  //首先需要初始化
  var   xmlDoc;   
  var   nodeIndex; 
  function   getxmlDoc()   
  {   
      xmlDoc=new   ActiveXObject("Microsoft.XMLDOM");   
          var   currNode;   
          xmlDoc.async=false;   
          xmlDoc.load("Area.xml");   
          if(xmlDoc.parseError.errorCode!=0)   
          {   
                  var   myErr=xmlDoc.parseError;   
                  alert("出错!"+myErr.reason);   
          }           
  }
  function Init()
  {
    //打开xlmdocm文档
    getxmlDoc();
    var   dropElement1=document.getElementById("Select1"); 
    var   dropElement2=document.getElementById("Select2"); 
    var   dropElement3=document.getElementById("Select3");   
    RemoveDropDownList(dropElement1);
    RemoveDropDownList(dropElement2);
    RemoveDropDownList(dropElement3);
    var  TopnodeList=xmlDoc.selectSingleNode("address").childNodes;
    if(TopnodeList.length>0)
    {
        //省份列表
        var country;
        var province;
        var city;
        for(var   i=0; i<TopnodeList.length;   i++)
        {
              //添加列表项目
              country=TopnodeList[i];       
              var   eOption=document.createElement("option");   
              eOption.value=country.getAttribute("name");
              eOption.text=country.getAttribute("name");
              dropElement1.add(eOption);
        }
        if(TopnodeList[0].childNodes.length>0)
        {
            //城市列表
            for(var i=0;i<TopnodeList[0].childNodes.length;i++)
            {
               var   id=dropElement1.options[0].value;
               //默认为第一个省份的城市
               province=TopnodeList[0]; 
               var   eOption=document.createElement("option");  
               eOption.value=province.childNodes[i].getAttribute("name");   
               eOption.text=province.childNodes[i].getAttribute("name");   
               dropElement2.add(eOption);
            }
            if(TopnodeList[0].childNodes[0].childNodes.length>0)
            {
               //县列表
               for(var i=0;i<TopnodeList[0].childNodes[0].childNodes.length;i++)
               {
                  var   id=dropElement2.options[0].value;
                  //默认为第一个城市的第一个县列表
                  city=TopnodeList[0].childNodes[0];  
                  var   eOption=document.createElement("option");  
                  eOption.value=city.childNodes[i].getAttribute("name");   
                  eOption.text=city.childNodes[i].getAttribute("name");   
                  this.document.getElementById("Select3").add(eOption);
               }
            }
        }
    }
  }   
  function   selectCity()   
  {       var   dropElement1=document.getElementById("Select1"); 
          var   name=dropElement1.options[dropElement1.selectedIndex].value;
          //alert(id);
          var   countryNodes=xmlDoc.selectSingleNode('//address/province [@name="'+name+'"]');   
          //alert(countryNodes.childNodes.length); 
          var   province=document.getElementById("Select2");       
          var   city=document.getElementById("Select3");       
          RemoveDropDownList(province);   
          RemoveDropDownList(city);
          if(countryNodes.childNodes.length>0)
          {
               //填充城市          
               for(var   i=0;   i<countryNodes.childNodes.length;   i++)   
               {   
                  var   provinceNode=countryNodes.childNodes[i];     
                  var   eOption=document.createElement("option");   
                  eOption.value=provinceNode.getAttribute("name");   
                  eOption.text=provinceNode.getAttribute("name");   
                  province.add(eOption);   
               }
               if(countryNodes.childNodes[0].childNodes.length>0)
               {
                  //填充选择省份的第一个城市的县列表
                  for(var i=0;i<countryNodes.childNodes[0].childNodes.length;i++)
                  {
                      //alert("i="+i+"\r\n"+"length="+countryNodes.childNodes[0].childNodes.length+"\r\n");
                      var   dropElement2=document.getElementById("Select2"); 
                      var   dropElement3=document.getElementById("Select3"); 
                      //取当天省份下第一个城市列表
                      var cityNode=countryNodes.childNodes[0];
                      //alert(cityNode.childNodes.length); 
                      var   eOption=document.createElement("option");  
                      eOption.value=cityNode.childNodes[i].getAttribute("name");   
                      eOption.text=cityNode.childNodes[i].getAttribute("name");   
                      dropElement3.add(eOption);
                  }
               }
          }
  }   
  function   selectCountry()   
  {   
          var   dropElement2=document.getElementById("Select2");   
          var   name=dropElement2.options[dropElement2.selectedIndex].value;   
          var   provinceNode=xmlDoc.selectSingleNode('//address/province/city[@name="'+name+'"]');   
          var   city=document.getElementById("Select3");       
          RemoveDropDownList(city);   
          for(var   i=0;   i<provinceNode.childNodes.length;   i++)   
          {   
                  var   cityNode=provinceNode.childNodes[i];     
                  var   eOption=document.createElement("option");   
                  eOption.value=cityNode.getAttribute("name");   
                  eOption.text=cityNode.getAttribute("name");   
                  city.add(eOption);   
          }   
  }   
  function   RemoveDropDownList(obj)   
  {   
      if(obj)
      {
          var   len=obj.options.length;   
          if(len>0)
          {
            //alert(len);   
            for(var   i=len;i>=0;i--)   
            {   
                  obj.remove(i);   
            }
          }
       }
            
  }   
  </script>  
</head>

<body onload="Init();">
    <form id="form1" runat="server">
    <div>
    <select id="Select1" name="Select1" runat="server" onchange="selectCity();">
		 <option value="" selected="true">省/直辖市</option>
	</select>
    <select id="Select2" name="Select2" runat="server" onchange="selectCountry()">
		<option value="" selected="true">请选择</option>
	</select>
    <select id="Select3" name="Select3" runat="server" >
		<option value="" selected="true">请选择</option>
	</select>
    </div>
    </form>
</body>
</html>

 

 

2、省市县信息的资源文件(同Area.html在同一目录中) 见附件。

 

分享到:
评论

相关推荐

    js 省市县三级联动,特别好用

    总结来说,JavaScript省市县三级联动的实现涉及到了数据结构设计、事件监听、DOM操作、数据处理等多个JavaScript基础和进阶概念。通过熟练掌握这些知识点,开发者可以构建出更加高效、易用的Web应用。

    js省市县三级联动

    在这个“js省市县三级联动”项目中,我们可以看到一个简洁的实现方式。开发者通过编写JavaScript代码,实现了动态更新下拉选项的功能。以下是对这个功能的详细解析: 1. **数据结构**:首先,我们需要一个数据结构...

    JavaScript 省市区三级联动 json文件

    省市区三级联动 , JavaScript 省市区三级联动 json文件,JavaScript 省市区三级联动 json文件

    纯js省市县三级联动 附带邮编

    标题中的“纯js省市县三级联动 附带邮编”指的是使用JavaScript实现的这种功能,并且包含了全国所有地区的邮编数据。 首先,我们要理解什么是“三级联动”。在Web开发中,三级联动通常是指三个下拉菜单(或选择框)...

    javascript省市县三级联动菜单

    javascript省市县三级联动菜单,很好的例子。

    js省市县三级联动,全静态

    以上就是实现JavaScript省市县三级联动的基本步骤。在实际项目中,可能还需要考虑数据加载的异步处理、多选支持、搜索功能以及错误处理等问题。此外,对于大型项目,通常会采用更先进的前端框架如React、Vue或...

    微信小程序-省市县三级联动,带有自定义地区码(源代码+截图)

    微信小程序-省市县三级联动,带有自定义地区码(源代码+截图)微信小程序-省市县三级联动,带有自定义地区码(源代码+截图)微信小程序-省市县三级联动,带有自定义地区码(源代码+截图)微信小程序-省市县三级联动,带有...

    javaScript省市县三级联动

    实现JavaScript省市县三级联动的关键技术包括DOM操作、事件监听和Ajax异步请求。首先,我们需要创建HTML结构,包含三个下拉菜单分别对应省、市、县。然后,通过JavaScript获取这些元素并绑定事件监听器。 DOM...

    JS省市县三级联动(支持多种浏览器)

    JS省市县三级联动(支持多种浏览器)JS省市县三级联动(支持多种浏览器)JS省市县三级联动(支持多种浏览器)JS省市县三级联动(支持多种浏览器)JS省市县三级联动(支持多种浏览器)JS省市县三级联动(支持多种浏览器)

    省市县三级联动.zip

    在这个“省市县三级联动”压缩包中,包含了一个数据库表和JavaScript实现的代码,旨在帮助开发者快速构建能够动态关联省级、市级和县级数据的功能。 数据库表的设计是关键,通常会有一个表格,包含以下字段: 1. `...

    省市区三级联动数据address.js

    省市区三级联动数据

    JavaScript 省市县三级联动

    JavaScript ,省市县三级联动菜单

    省市县三级联动js

    总的来说,"省市县三级联动js"是一种基于JavaScript的前端交互技术,通过DOM操作和事件监听,实现了多级下拉菜单的联动效果,提高了用户填写地址的效率和准确性。在现代Web开发中,这样的功能是提升用户体验的重要...

    纯JS写的省市县三级联动菜单

    这个特定的项目,"纯JS写的省市县三级联动菜单",是一个无需使用AJAX,而是直接连接数据库来实现的功能模块。下面我们将深入探讨这个话题。 首先,我们要理解什么是三级联动菜单。它通常包含三个级别的选项,如在这...

Global site tag (gtag.js) - Google Analytics