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

本文介绍了一种使用XML和JavaScript实现复杂多级联动选择器的方法。通过XML存储数据结构,利用JS进行数据解析与动态填充,实现了年月日及时段的联动选择功能。
...
...
3944

被折叠的 条评论
为什么被折叠?



