js+xml 省市级联以及修改默认选中

来源:互联网 发布:moto2008概预算软件 编辑:程序博客网 时间:2024/04/29 01:22
需要默认选中时,定义一个变量 var cityId=城市id

path为工程的跟目录


下面是js代码
function readxml() {
 
   var XmlDoc =null;
    if(window.ActiveXObject) {
      XmlDoc = newActiveXObject("Microsoft.XMLDOM");
      XmlDoc.async = false;
      XmlDoc.load(path +"/web/common/regions.xml");
      browse = "ie";
    } else if(document.implementation
         &&document.implementation.createDocument) {
      xmlDoc =document.implementation.createDocument('', '', null);
      xmlDoc.load("regions.xml");
      browse = "ff";
    } else{
      alert('未做与该浏览器的兼容!');
    }

    var root =XmlDoc.documentElement;

    //获取根节点下面的省节点
    varprovinces = root.childNodes;

    var province= document.getElementByIdx_x_x("province");
    var cities =document.getElementByIdx_x_x("regId");
    for ( var i= 0; i < provinces.length; i++) {
      // 获取省节点的name属性的值
      var name =provinces[i].getAttribute("name");
      // 创建一个option
      var opt =document_createElement_x_x("option");
      // 为option添加文本
      opt.a(document_createTextNode(name));
      // 添加到父节点中
      if(cityId!=null&&cityId!=""){
      var citys=provinces[i].childNodes;
      for(varj=0;j<citys.length;j++){
         if(citys[j].getAttribute("id")==cityId){
            opt.selected="selected";
            for ( var j = 0; j < citys.length;j++) {
               // 创建一个option
               var opt1 =document_createElement_x_x("option");
               opt1.value = citys[j].getAttribute("id");
               // 为option添加文本
               opt1.a(document_createTextNode(citys[j]
                     .getAttribute("name")));
               // 添加到父节点中
               if(citys[j].getAttribute("id")==cityId){
               opt1.selected="selected";
               }
               cities.a(opt1);
            }
         }
      }
      }
      province.a(opt);
    }
   province.onchange = function() {
      var pce =document.getElementByIdx_x_x("province");
      var opts = pce.options;
      var opt1 = opts[pce.selectedIndex];
      var name = opt1.innerText;
      for ( var i = 0; i <provinces.length; i++) {
         // 获取省节点的name属性的值
         var name1 =provinces[i].getAttribute("name");
         if (name == name1) {
            cities.length = 1;// 每次改变的时候清空
            var pros = provinces[i];
            var citys = pros.childNodes;
            for ( var j = 0; j < citys.length;j++) {
               // 创建一个option
               var opt1 =document_createElement_x_x("option");
               opt1.value = citys[j].getAttribute("id");
               // 为option添加文本
               opt1.a(document_createTextNode(citys[j]
                     .getAttribute("name")));
               // 添加到父节点中
               cities.a(opt1);
            }
         }
      }
    }
}


下面是xml结构
<?xml version="1.0"encoding="utf-8"?>
<regions>
  <provincename="湖北">
   <city id="1" name="武汉" isOpen="1"/>
   <city id="2" name="黄冈" isOpen="1"/>
   <city id="19" name="襄樊" isOpen="1"/>
   <city id="22" name="鄂州" isOpen="0"/>
   <city id="24" name="黄石" isOpen="1"/>
  </province>
  <provincename="重庆">
   <city id="23" name="重庆" isOpen="0"/>
  </province>
</regions>

原创粉丝点击