利用xml数据岛实现多级聯動


    應用XML 可以輕松實現以往JS 實現起來較複雜的多級聯動的實例,
< select name = year ></ select >
< select name = month ></ select >
< select name = date ></ select >
< select name = clock ></ select >
< input name = result >

< script >
       
// arrSel定义了要修改的下拉框和xml数据的节点名称
        var  arrSel = [ " year " , " month " , " date " , " clock " ];
</ script >

< xml id = xmldata >
 
< xmldata >
  
< year value = " 2000 " >
   
< month value = " 4 " >
    
< date value = " 14 " >
     
< clock value = " 一点 "   />
     
< clock value = " 三点 "   />
    
</ date >
    
< date value = " 17 " >
     
< clock value = " 一点 "   />
    
</ date >
   
</ month >
   
< month value = " 5 " >
    
< date value = " 15 " >
     
< clock value = " 一点 "   />
     
< clock value = " 四点 "   />
     
< clock value = " 七点 "   />
    
</ date >
   
</ month >
  
</ year >
  
< year value = " 2001 " >
   
< month value = " 7 " >
    
< date value = " 16 " >
     
< clock value = " 一点 "   />
     
< clock value = " 五点 "   />
     
< clock value = " 九点 "   />
    
</ date >
   
</ month >
  
</ year >
 
</ xmldata >
</ xml >

< script >
function  qswhXml(num)
...
{
     
var i,j,arrTemp=[];
     
for(i=0;i<num;i++)
           arrTemp[i]
=document.all(arrSel[i]).options[document.all(arrSel[i]).selectedIndex].text
 
     
if(num==arrSel.length)
    ...
{
     
//这里处理最后的数据
      document.all("result").value="您中了("+arrTemp+")";return;
     }

 
     
//document.all(arrSel[num]) 這個是選取某個Option而設,跟下面這句聯用 :options[length++].text=obj.childNodes[i].getAttribute("value");    
     with(document.all(arrSel[num]))
    ...
{
      length
=0
      
var obj=document.all.xmldata.XMLDocument.childNodes[0];
      
for(i=0;i<num;i++)
            obj
=obj.selectSingleNode(arrSel[i]+'[@value="'+arrTemp[i]+'"]');
         
         
// 要一級一級往下搜索選用For 方式進行遞歸選取
         // 如用if 則得具體指定它的路徑,如:            objNode.SelectSingleNode(“/Company/Department/Employees/Employee”)
          //if(num>0)
          //      obj=obj.selectSingleNode(arrSel[num-1]+'[@value="'+arrTemp[num-1]+'"]');

      
for(i=0;i<obj.childNodes.length;i++)
            options[length
++].text=obj.childNodes[i].getAttribute("value");

      onchange
=new Function("qswhXml("+(num+1)+")");
      onchange();
     }

}

qswhXml(
0 );
</ script >  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值