asp使用xml文件实现联动下拉框

来源:互联网 发布:天津咸水沽美工招聘 编辑:程序博客网 时间:2024/05/17 04:58
asp网页调用xml文件,实现两个下拉框的联动。
//调用xml文件函数
function loadxml(filepath)
    {
      var oDom=new ActiveXObject('Microsoft.XMLDOM');  
        oDom.async=false;  
        oDom.load(filepath);
        if(oDom == null)
           {
             alert('您的浏览器不支持xml文件读取,或不存在此文件。于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
             return false;
            }
        else
          {
             return oDom;
           }
   }
 //初始填充
function initfill(select1,select2,strvalue1,strvalue2,xmlfile,dm_label1,nr_label1,dm_label2,nr_label2)
//主选框名称,联动框名称,主选框初始值,副选框初始值,xml文件,主选框关键字标签名,主选框关键字内容标签名,联动框关键字标签名,副选框关键字内容标签名。
{
   var i=0;
   
   var oSelect1=document.all(select1);
   var oSelect2=document.all(select2);
   var xmlDom=loadxml(xmlfile);
   var nodes=xmlDom.documentElement.childNodes;
   var nodesbuff
 
   for(i=0;i<nodes.length;i++)  
       {
         oSelect1.add(document.createElement("OPTION"));
         oSelect1.options[i].text=nodes[i].getAttribute(nr_label1);
         oSelect1.options[i].value=nodes[i].getAttribute(dm_label1);       
         if (oSelect1.options[i].value==strvalue1)
             {
                oSelect1.selectedIndex=i;
                nodesbuff=nodes[i].childNodes;
              }
         
        }
        if (nodesbuff!=null)
             {               
              initfillselect(oSelect2,nodesbuff,dm_label2,nr_label2,strvalue2);
              }   
}//end initfill
//带初始值初始填充
function initfillselect(oSelect,nodes,dm_label,nr_label,strvalue)
{ var i=0;
  for(i=oSelect.options.length;i>=0;i--)
      {
        oSelect.options.remove(i);
      }
  for(i=0;i<nodes.length;i++)  
      {
        oSelect.add(document.createElement("OPTION"));
        oSelect.options[i].text=nodes[i].getAttribute(dm_label)+":"+nodes[i].getAttribute(nr_label);
        oSelect.options[i].value=nodes[i].getAttribute(dm_label);
        if (oSelect.options[i].value==strvalue)
             {
                oSelect.selectedIndex=i;
              }
      }
}//end initfillselect
//下拉框联动
function select_change(select1,select2,xmlfile,dm_label1,dm_label2,nr_label2)//主选 框名称,联动框名称,xml文件,主选框关键字标签名,联动框关键字标签名,副选框关键字内容标签名。
{
var i=0;
var oSelect1=document.all(select1);//主选框
var oSelect2=document.all(select2);//联动框
var curvalue= oSelect1.options[(oSelect1.selectedIndex)].value;//主选框当前关键字
var xmlDom=loadxml(xmlfile);//读取xml文件
var nodes=xmlDom.documentElement.childNodes;
var nodeschild
  for(i=0;i<nodes.length;i++)  
       {       
        if (nodes[i].getAttribute(dm_label1)==curvalue)
            {       
               nodeschild=nodes[i].childNodes;    
               fillselect(oSelect2,nodeschild,dm_label2,nr_label2);    //根据主选框类别填充副选框
               return true;
             }
        }
}
//填充被联动框
function fillselect(oSelect,nodes,dm_label,nr_label)
{ var i=0;
  for(i=oSelect.options.length;i>=0;i--)
      {
        oSelect.options.remove(i);
      }
  for(i=0;i<nodes.length;i++)  
      {
        oSelect.add(document.createElement("OPTION"));
        oSelect.options[i].text=nodes[i].getAttribute(dm_label)+":"+nodes[i].getAttribute(nr_label);
        oSelect.options[i].value=nodes[i].getAttribute(dm_label);   
      }
}
//填充普通select
function select_fill(SelectName,xmlfile,dm_label,nr_label,initvalue)
{
 var i=0;   
 var oSelect=document.all(SelectName); 
 var xmlDom=loadxml(xmlfile);
 var nodes=xmlDom.documentElement.childNodes;
 if (initvalue==""||initvalue==null){initvalue=0;}
 
 for(i=0;i<nodes.length;i++)  
       {
           oSelect.add(document.createElement("OPTION"));
           oSelect.options[i].text=nodes[i].getAttribute(nr_label);
           oSelect.options[i].value=nodes[i].getAttribute(dm_label);
         if (nodes[i].getAttribute(dm_label)==initvalue)
            {     
             oSelect.selectedIndex=i;
           
             }
        }
}


xml格式文件实例:
 <hyml code="I" mlname="住宿和餐饮业">
      <hydm code="I6600" hyname="住宿业"  />
      <hydm code="I6610" hyname="  旅游饭店" />
          <hydm code="I6620" hyname="  一般旅馆"/>
      <hydm code="I6690" hyname="  其他住宿服务"/>
      <hydm code="I6700" hyname="餐饮业"/>
      <hydm code="I6710" hyname="  正餐服务"/>   
      <hydm code="I6720" hyname="  快餐服务"/>
      <hydm code="I6730" hyname="  饮料及冷饮服务"/>   
      <hydm code="I6790" hyname="  其他餐饮服务"/>
    </hyml>
    <hyml code="J" mlname="金融业">
      <hydm code="J6800" hyname="银行业"  />
      <hydm code="J6810" hyname="  中央银行" />
          <hydm code="J6820" hyname="  商业银行"/>
      <hydm code="J6890" hyname="  其他银行"/>
     
      <hydm code="J7190" hyname="  其他未列明的金融活动"/>   
    </hyml>
    <hyml code="K" mlname="房地产业">
      <hydm code="K7200" hyname="房地产业"  />
      <hydm code="K7210" hyname="  房地产开发经营" />
          <hydm code="K7220" hyname="  物业管理"/>
      <hydm code="K7230" hyname="  房地产中介服务"/>
      <hydm code="K7290" hyname="  其他房地产活动"/>
    </hyml>
    <hyml code="L" mlname="租赁和商务服务业 ">
      <hydm code="L7300" hyname="租赁业"  />
      <hydm code="L7310" hyname="  机械设备租赁" />
          <hydm code="L7311" hyname="    汽车租赁"/>
      <hydm code="L7312" hyname="    农业机械租赁"/>
      <hydm code="L7313" hyname="    建筑工程机械与设备租赁"/>
      <hydm code="L7314" hyname="    计算机及通讯设备租赁"/>   
      <hydm code="L7319" hyname="    其他机械与设备租赁"/>
     

    </hyml>
asp实例
<table>
<tr>
    <td colspan="1">行业代码:<input type="hidden" name="hymlbuff" value="初始值" /></td>
    <td colspan="7"><select name="hyml"   style=" width:220px;"  onchange="select_change('hyml','hydm','../public/xml/hydm.xml','code','code','hyname');"></select>
       <input type="hidden" name="hydmbuff" value="初始值" />
    <select name="hydm" style=" width:300px;" ></select>
    </td>
  </tr>
</table>

initfill("hyml","hydm",document.all("hymlbuff").value,document.all("hydmbuff").value,"../public/xml/hydm.xml","code","mlname","code","hyname");

</script>