利用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> 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值