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

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;"  οnchange="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> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP 加数据库 四级菜单联动 var m_oXMLDoc = new ActiveXObject("Microsoft.XMLDOM"); var m_sBaseSrc = "Tree.asp?ParentCode="; //源码爱好者(http://www.codefans.net) function BindSelect( strXMLSrc , objSelectName, defaultVal) { m_oXMLDoc.async = true; m_oXMLDoc.onreadystatechange = Function( "fnLoadComplete('" + objSelectName + "', '" + defaultVal + "');" ); m_oXMLDoc.load( strXMLSrc ); } function fnLoadComplete(objSelectName, defaultVal) { var objSelect = document.all[objSelectName]; var aryXMLNodes; var node; if (objSelect == null) return; try { var iReadyState = m_oXMLDoc.readyState; } catch(e) { return; } if( iReadyState != 4 ) return; if( m_oXMLDoc != null && m_oXMLDoc.xml != "" ) { objSelect.length = 0; aryXMLNodes = m_oXMLDoc.documentElement.selectNodes("TreeNode"); objSelect.options[0] = new Option("==全部=="); for (var i=0; i 1) { SetSelectedValue(objSelect, defaultVal) } if(objSelect.ChildSelectName != null) { objSelect.onchange = Function( "var val = this.options[this.selectedIndex].value;BindSelect(m_sBaseSrc+val, '"+objSelect.ChildSelectName+"', '"+defaultVal+"');if(val!='')document.all.MaterialClassCode.value=val;" ); objSelect.fireEvent("onchange"); } else { objSelect.onchange = Function( "var val = this.options[this.selectedIndex].value;if(val!='')document.all.MaterialClassCode.value=val;" ); } } } function InitSelect(defaultVal) { document.all.MaterialClassCode.value = ""; BindSelect( m_sBaseSrc + "00", "MaterialClass1", defaultVal); } function Equality(val1,val2) { if (val1.length < val2.length || val2 == "") return false; return (val1.substr(0,val2.length) == val2) } function SetSelectedValue(oSel,val) { if (val == null) return; for(var i=0; i<oSel.length; i++) { if (Equality(val, oSel.options[i].value)) { oSel.selectedIndex = i; if(oSel.ChildSelectName == null) oSel.fireEvent("onchange"); break; } } } window.onload = function(){InitSelect();}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值