世界地区选择

选用的是qq LocList.xml数据
我的是在 E:\qq\I18N\2052
qq安装目录不同 2052目录下面的LocList.xml文件 引入即可

国家-省/州-市/区选择
html

                        <select id="country" class="select120" name="end_country">

                        </select>

                        <select class="select120" id="state" name="end_province">

                        </select>

                        <select class="select120" id="city" name="end_city">

                        </select>

js

<script type="text/javascript">

      //注意事项
      //有的国家是没有state的只有city

      //1.xml读取方法 兼容主流浏览器
      var loadXML = function (xmlFile) {
        var xmlDoc;
        if (window.ActiveXObject) {
          xmlDoc = new ActiveXObject('Microsoft.XMLDOM');//IE浏览器
          xmlDoc.async = false;
          xmlDoc.load(xmlFile);
        }
        else if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) { //火狐浏览器
          xmlDoc = document.implementation.createDocument('', '', null);
          xmlDoc.load(xmlFile);
        }
        else
        {
          var xmlhttp = new window.XMLHttpRequest();
          xmlhttp.open("GET", xmlFile, false);
          xmlhttp.send(null);
          if (xmlhttp.readyState == 4) {
            xmlDoc = xmlhttp.responseXML.documentElement;
          }
        }
        return xmlDoc;
      }


      //2. 获取select,初始化
      var countrySelectObj = document.getElementById("country");
      var stateSelectObj = document.getElementById("state");
      var citySelectObj = document.getElementById("city");

      countrySelectObj.add(new Option("--请选择--",""));
      stateSelectObj.add(new Option("--请选择--",""));
      citySelectObj.add(new Option("--请选择--",""));

      //读取xml文件 填充国际列表
      var xmlDoc = loadXML("LocList.xml");
      var xmlCountryNodes=xmlDoc.getElementsByTagName("CountryRegion");
      for(var i=0;i<xmlCountryNodes.length;i++){
        var xmlCountryName = xmlCountryNodes[i].getAttribute("Name");
        var xmlCountryCode = xmlCountryNodes[i].getAttribute("Code");
        countrySelectObj.add(new Option(xmlCountryName,xmlCountryCode));
      }


      //国家级别选择事件
      countrySelectObj.onchange=function(){
        //清空
        stateSelectObj.length=0;
        stateSelectObj.add(new Option("--请选择--",""));
        if(this.value!=""){
          for(var i=0;i<xmlCountryNodes.length;i++){
            //在xml中查找所有的State标签,看谁的Code属性和value值一样
            var xmlCountryCode = xmlCountryNodes[i].getAttribute("Code");
            if(this.value==xmlCountryCode){
              //调用该标签的getElementsByTagName,找到子标签。
              var xmlStateNodes = xmlCountryNodes[i].getElementsByTagName("State");
              //检查是否存在state
              var fStateNodeName=xmlStateNodes[0].getAttribute("Name");
              console.log(fStateNodeName);
              if(fStateNodeName == null)
              {
                stateSelectObj.length=0;
                stateSelectObj.add(new Option("--请选择城市--",""));
                //城市列表填充
                var xmlCityNodes = xmlStateNodes[0].getElementsByTagName("City");
                //清空city
                citySelectObj.length=0;
                for(var l=0;l<xmlCityNodes.length;l++)
                {
                  var xmlcityName=xmlCityNodes[l].getAttribute("Name");
                  var xmlcityCode=xmlCityNodes[l].getAttribute("Code");
                  citySelectObj.add(new Option(xmlcityName,xmlcityCode));
                }
              }
              else
              {
                for(var j=0;j<xmlStateNodes.length;j++){
                  var xmlStateName = xmlStateNodes[j].getAttribute("Name");
                  var xmlStateCode = xmlStateNodes[j].getAttribute("Code");
                  //添加城市html
                  stateSelectObj.add(new Option(xmlStateName,xmlStateCode));
                }
              }
              break;
            }

          }
        }
      }


      //给省份select注册onchange事件
      stateSelectObj.onchange=function(){
        //清空
        citySelectObj.length=0;
        citySelectObj.add(new Option("--请选择--",""));
        if(this.value!=""){
          for(var i=0;i<xmlCountryNodes.length;i++){
            //在xml中查找所有的State标签,看谁的Code属性和value值一样
            var xmlCountryCode = xmlCountryNodes[i].getAttribute("Code");
            if(countrySelectObj.value==xmlCountryCode){
              //调用该标签的getElementsByTagName,找到子标签。
              var xmlStateNodes = xmlCountryNodes[i].getElementsByTagName("State");
              for(var j=0;j<xmlStateNodes.length;j++){
                if(stateSelectObj.value==xmlStateNodes[j].getAttribute("Code")) {
                  var xmlCityNodes = xmlStateNodes[j].getElementsByTagName("City");
                  for(var k=0;k<xmlCityNodes.length;k++)
                  {
                    var xmlCityName = xmlCityNodes[k].getAttribute("Name");
                    var xmlCityCode = xmlCityNodes[k].getAttribute("Code");
                    //添加城市html
                    citySelectObj.add(new Option(xmlCityName,xmlCityCode));
                  }
                }
              }
              break;
            }
          }
        }
      }


      //如果需要市级选择县区级 同理 多一层 中国以外的县区级很少



    </script>

效果:
国家效果

这里写图片描述

这里写图片描述

转载请注明谢谢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值