网上下的下拉联动插件!数据库是写在XML文本文件里的。如何实现这样的功能?
下拉联动代码如下(已运用到我的页面里面):
多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)</p>
<select name="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>
<select name="MaterialClass1" onchange="scs(this.value,'MaterialClass2')" ChildSelectName="MaterialClass2" val="02"></select>
<select name="MaterialClass2" onchange="scs(this.value,'MaterialClass3')" ChildSelectName="MaterialClass3" val="31"></select>
<select name="MaterialClass3" val="33"></select>
<script type="text/javascript">
var loadXML = function(xmlFile) {
var xmlDoc;
if(window.ActiveXObject){
xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
xmlDoc.async = false;
xmlDoc.load(xmlFile);
}else if (document.implementation&&document.implementation.createDocument){
xmlDoc = document.implementation.createDocument('', '', null);
xmlDoc.load(xmlFile);
}else {
alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
return null;
}
return xmlDoc;
};
var xmlDoc = loadXML('xml.xml');
var arr=xmlDoc.getElementsByTagName("MaterialClasses")[0].childNodes;
function scs(pid,name,val){
var obj=document.getElementsByName(name)[0];
if(obj==null)return false;
obj.innerHTML="";
var id=null,n= 0,val=obj.getAttribute("val");
for(var i=0;i<arr.length;i++){
if(arr[i].getAttribute("pid")==pid){
var v=arr[i].getAttribute("MaterialClassCode");
if(n==0
[其他解释]
谢谢啊! 不过还是没解决我想解决的问题!
[其他解释]
xzy21com 大哥! 我上面的这段SCRIPT代码应该是加载XML数据库作用,您看怎么修改这段代码啊!
我看的半懂半不懂!的 麻烦了!
[其他解释]
我尝试了以下几种方法,但都没实现成功!
1,<select name="MaterialClass1" ChildSelectName="MaterialClass2"><option vaule=rs("id_card")</option></select><select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>
2,<select name="MaterialClass1" ChildSelectName="MaterialClass2"><option MaterialClassCode=rs("id_card")</option></select>
<select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>
rs("id_card")是现成的数据值!
有其他方法能实现不?
[其他解释]
一样的,你那个我不知道你具体的东西
但原理是一样的
你的那个下拉的数据是怎么来的,是服务端程序循环出来的,还会用JS加载过来的
如果服务端程序循环出来的就直接if判断,如果是JS加载过来的,那应该是在JS里进行判断
[其他解释]
大哥,你除了问下拉菜单就是下拉框成专家了
[其他解释]
呵呵! 我菜鸟啊! 病急乱投医啊!
[其他解释]
v==val)id=arr[i].getAttribute("MaterialClassCode");
var str=new Option(arr[i].getAttribute("Description"),v);
obj.options.add(str);
n++;
}
}
var child=obj.getAttribute("ChildSelectName");
if(child!=null){
scs(id,child);
}
}
scs("0","MaterialClass1");
</script>
<?xml version="1.0" encoding="utf-8" ?>
<MaterialClasses>
<MaterialClass MaterialClassCode="01" pid="0" Description="鹰潭"/>
<MaterialClass MaterialClassCode="20" pid="01" Description="鹰潭1"/>
<MaterialClass MaterialClassCode="21" pid="01" Description="鹰潭2"/>
<MaterialClass MaterialClassCode="22" pid="20" Description="鹰潭1_1"/>
<MaterialClass MaterialClassCode="23" pid="20" Description="鹰潭1_2"/>
<MaterialClass MaterialClassCode="24" pid="21" Description="鹰潭2_1"/>
<MaterialClass MaterialClassCode="02" pid="0" Description="上饶"/>
<MaterialClass MaterialClassCode="30" pid="02" Description="上饶1"/>
<MaterialClass MaterialClassCode="31" pid="02" Description="上饶2"/>
<MaterialClass MaterialClassCode="32" pid="30" Description="上饶1_1"/>
<MaterialClass MaterialClassCode="33" pid="31" Description="上饶2_1"/>
<MaterialClass MaterialClassCode="03" pid="0" Description="景德镇"/>
<MaterialClass MaterialClassCode="04" pid="0" Description="向西一"/>
<MaterialClass MaterialClassCode="05" pid="0" Description="向西二"/>
<MaterialClass MaterialClassCode="06" pid="0" Description="萍乡"/>
<MaterialClass MaterialClassCode="07" pid="0" Description="新余"/>
<MaterialClass MaterialClassCode="08" pid="0" Description="九江"/>
<MaterialClass MaterialClassCode="09" pid="0" Description="吉安"/>
<MaterialClass MaterialClassCode="10" pid="0" Description="赣州"/>
<MaterialClass MaterialClassCode="11" pid="0" Description="向西电脱"/>
<MaterialClass MaterialClassCode="12" pid="0" Description="鹰潭综合"/>
</MaterialClasses>
//-----------------------------------------------
// LoadXML(strXMLSrc)
//-----------------------------------------------
function BindSelect( strXMLSrc , objSelectName)
{
m_oXMLDoc.async = true;
m_oXMLDoc.onreadystatechange = Function( "fnLoadComplete('" + objSelectName + "');" );
m_oXMLDoc.load( strXMLSrc );
}
function fnLoadComplete(objSelectName)
{
var objSelect = document.all[objSelectName];
var aryXMLNodes;
var node;
if (objSelect == null)
return;
try
{
var iReadyState = m_oXMLDoc.readyState;
}
catch(e)
{
return;
}
if( iReadyState != 4 ) return;
if( m_oXMLDoc != null && m_oXMLDoc.xml != "" )
{
objSelect.length = 0;
aryXMLNodes = m_oXMLDoc.documentElement.selectNodes("MaterialClass");
for (var i=0; i < aryXMLNodes.length; i++)
{
node = aryXMLNodes[i];
objSelect.options[i] = new Option(node.getAttribute("Description"),node.getAttribute("MaterialClassCode"));
}
if(objSelect.ChildSelectName != null)
{
objSelect.onchange = Function( "BindSelect('MaterialClass'+this.options[this.selectedIndex].value+'.xml', '"+objSelect.ChildSelectName+"');" );
objSelect.fireEvent("onchange");
}
}
}
function Init()
{
try{
BindSelect( m_sXmlSrc, "MaterialClass1");
}
catch(e)
{
setTimeout("Init()",1000)
}
}
</script>
<body onLoad="Init()">
<p>多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)</p>
<select name="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>