mselect.xml
<?xml version="1.0" encoding="GB2312" ?>
<Troot>
<Item id="1" pid="0" c="1">大學(xué)</Item>
<Item id="2" pid="0" c="3">中學(xué)</Item>
<Item id="3" pid="0" c="3">小學(xué)</Item>
<Item id="4" pid="2" c="2">高中</Item>
<Item id="5" pid="2" c="5">初中</Item>
<Item id="6" pid="15" c="3">清華大學(xué)</Item>
<Item id="7" pid="15" c="4">北京大學(xué)</Item>
<Item id="8" pid="5" c="3">天津鐵三中</Item>
<Item id="9" pid="4" c="3">天津市二中</Item>
<Item id="10" pid="16" c="2">天津音樂(lè)學(xué)院</Item>
<Item id="11" pid="15" c="5">天津商學(xué)院</Item>
<Item id="12" pid="4" c="3">耀華中學(xué)</Item>
<Item id="13" pid="3" c="6">昆緯路小學(xué)</Item>
<Item id="14" pid="2" c="6">七中</Item>
<Item id="15" pid="1" c="1">綜合類院校</Item>
<Item id="16" pid="1" c="1">藝術(shù)類院校</Item>
<Item id="17" pid="15" c="4">醫(yī)科大學(xué)</Item>
<Item id="18" pid="15" c="4">天津師范大學(xué)</Item>
<Item id="19" pid="15" c="23">天津大學(xué)</Item>
<Item id="20" pid="15" c="7">南開大學(xué)</Item>
<Item id="21" pid="4" c="23">天津鐵一中</Item>
<Item id="22" pid="5" c="5">天津鐵一中</Item>
<Item id="23" pid="3" c="3">天津市鐵路職工子弟第三小學(xué)</Item>
<Item id="24" pid="3" c="3">天津市鐵路職工子弟第一小學(xué)</Item>
<Item id="25" pid="16" c="3">美術(shù)學(xué)院</Item>
<Item id="26" pid="16" c="3">體育學(xué)院</Item>
</Troot>
test.html
<HTML>
<HEAD>
<TITLE>XML版本的多級(jí)聯(lián)動(dòng)</TITLE>
<SCRIPT LANGUAGE=javascript>
<!--
/***********************************************
//
// 用DOM實(shí)現(xiàn):基于XML的動(dòng)態(tài)N級(jí)聯(lián)動(dòng)
//
//**********************************************/
// 最終版權(quán)歸 DSclub(任兀)擁有,您可以在未授權(quán)的情況下使用,但請(qǐng)保留此信息
//
// EMail:dsclub@hotmail.com
// QQ:9967030
// Nick Name: DSclub(兀兒-干部)
// 姓名:任兀
// 多級(jí)聯(lián)動(dòng)的Select集合
var objSelects = new Array();
// 創(chuàng)建應(yīng)有的Select對(duì)象
function funCreateSelectEl(passPid)
{
// 創(chuàng)建DOMDocument對(duì)象
var xmlSrc = new ActiveXObject("MicroSoft.XMLDOM");
xmlSrc = xmlSource.XMLDocument;
// root為文檔對(duì)象的根節(jié)點(diǎn)
var root = xmlSrc.documentElement;
// 得到所傳父ID的所有節(jié)點(diǎn)
var currentItems = root.selectNodes("http://Troot/Item[@pid = " + passPid + "]");
var iItems = currentItems.length;
if(iItems > 0)
{
// 創(chuàng)建Select并把OnChange事件寫好
var newChild = document.createElement("<SELECT onchange='eventSltChange()' id='slt" + objSelects.length + "'>");
// 向集合中添加新建的Select對(duì)象
objSelects[objSelects.length] = newChild;
// 向Select對(duì)向添加所有的Option
var i;
for(i = 0; i < iItems; i++)
{
var oOption = document.createElement("OPTION");
oOption.text = currentItems[i].text;
oOption.value = currentItems[i].attributes[0].text;
newChild.options.add(oOption);
}
// 將新建的Select放到目標(biāo)上
oDIV.appendChild(newChild);
// 先置一個(gè)空白空值
newChild.value = "";
}
}
// Select的OnChange事件響應(yīng)函數(shù)
function eventSltChange()
{
// 刪除全部本層下的孩子
var i;
for(i = objSelects.length - 1; i > parseInt(event.srcElement.id.replace("slt",""), 10); i--)
{
oDIV.removeChild(objSelects[i]);
objSelects.pop();
}
// 響應(yīng)新的選擇
funCreateSelectEl(event.srcElement.value);
// 聯(lián)動(dòng)的選擇結(jié)果
var resultArray = new Array();
for(i = 0; i < objSelects.length; i++)
{
resultArray[i] = objSelects[i].value;
}
// 輸出選定
OUTPUT.innerText = resultArray.join("-");
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="funCreateSelectEl(0)">
<DIV ID="oDIV"></DIV>
<XML ID="xmlSource" src="mselect.xml"/>
<BR/>
選定結(jié)果:<SPAN ID="OUTPUT"></SPAN>
</BODY>
</HTML>