-- 作者:springfeng
-- 发布时间:4/14/2006 9:13:00 AM
-- [转帖]转蜗牛的"无限分类关联菜单示例"
非常惭愧,我看不太明白,想在这里请教高手们,classXml()这个函数是如何运作的?运行的时候为什么 onchange()老报错,但实施起来却没任何问题? <SmallClassName value="开发">和<SmallClassName>开发</..>有什么不同?是不是前者是属性值后者是节点值? 这个实例中的下拉列表是没有option,如果要定义option,应该如何着手修改呢? [html] <select name=BigClassName></select> <select name=SmallClassName></select> <select name=SmallClassName2></select> <script> var arrSel=["BigClassName","SmallClassName","SmallClassName2"];//arrSel定义了要修改的下拉框和xml数据的节点名称 </script> <xml id=xmldata> <xmldata> <BigClassName value="ASPid"> <SmallClassName value="开发"> <SmallClassName2 value="ASP"> </SmallClassName2> <SmallClassName2 value="PHP"> </SmallClassName2> <SmallClassName2 value=".Net"> </SmallClassName2> <SmallClassName2 value="JSP"> </SmallClassName2> <SmallClassName2 value="XML"> </SmallClassName2> <SmallClassName2 value="数据库"> </SmallClassName2> </SmallClassName> <SmallClassName value="网页"> <SmallClassName2 value="CSS"> </SmallClassName2> <SmallClassName2 value="HTML"> </SmallClassName2> <SmallClassName2 value="WEB标准"> </SmallClassName2> <SmallClassName2 value="网页特效"> </SmallClassName2> </SmallClassName> <SmallClassName value="Macromedia"> <SmallClassName2 value="Flash"> </SmallClassName2> <SmallClassName2 value="Dreamweaver"> </SmallClassName2> <SmallClassName2 value="Fireworks"> </SmallClassName2> </SmallClassName> </BigClassName> <BigClassName value="网站开发者网络"> <SmallClassName value="网站"> <SmallClassName2 value="博客"> </SmallClassName2> <SmallClassName2 value="论坛"> </SmallClassName2> <SmallClassName2 value="网站"> </SmallClassName2> </SmallClassName> <SmallClassName value="论坛"> <SmallClassName2 value="网站开发"> </SmallClassName2> <SmallClassName2 value="网页设计"> </SmallClassName2> <SmallClassName2 value="视觉艺术"> </SmallClassName2> </SmallClassName> </BigClassName> <BigClassName value="精英论坛"> <SmallClassName value="论坛"> <SmallClassName2 value="网站开发"> </SmallClassName2> <SmallClassName2 value="网页设计"> </SmallClassName2> <SmallClassName2 value="视觉艺术"> </SmallClassName2> </SmallClassName> </BigClassName> </xmldata> </xml> <script> function classXml(num){ /******* by qigis(2004-10-17) ********/ 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; } 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(i=0;i<obj.childNodes.length;i++)options[length++].text=obj.childNodes[i].getAttribute("value"); onchange=new Function("classXml("+(num+1)+")"); onchange(); } } classXml(0); </script> [/html]
|