zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JavaScriptXML实现两级级联下拉列表

列表 实现 级联 两级 JavaScriptXML
2023-06-13 09:14:06 时间
1.创建测试XML文件:select.xml
复制代码代码如下:

<?xmlversion="1.0"encoding="GBK"?>
<select>
<provinceid="sx">
陕西
<cityid="xa">西安</city>
<cityid="bj">宝鸡</city>
<cityid="ak">安康</city>
</province>
<provinceid="js">
江苏
<cityid="nj">南京</city>
<cityid="xz">徐州</city>
</province>
<provinceid="sh">
上海
</province>
</select>

2.创建HTML页面:select.html
复制代码代码如下:

<body>
</body>
<script>...
/**//**
*@description二级级联下拉
*@authorBluesLee
*@lastModifBluesLee
*@createDate2007-10-13
*@modifDate2007-10-15
*@version1.0
*/
SelectLevel.prototype.xml;
SelectLevel.prototype.provinces;
SelectLevel.prototype.parentName="province";//父节点名称
SelectLevel.prototype.childName="city";//子节点名称
SelectLevel.prototype.keyName="id";//属性
/**//**
*对象SelectLevel的构造器
*@authorBluesLee
*@lastModifBluesLee
*@createDate2007-10-13
*@modifDate2007-10-15
*@version1.0
*/
functionSelectLevel(parentName,childName,keyName)...{
if(parentName!=null&&parentName!="")...{
this.parentName=parentName;
}
if(childName!=null&&childName!="")...{
this.childName=childName;
}
if(keyName!=null&&keyName!="")...{
this.keyName=keyName;
}
}
/**//**
*加载xml文件
*@authorBluesLee
*@lastModifBluesLee
*@createDate2007-10-13
*@modifDate2007-10-15
*@version1.0
*/
SelectLevel.prototype.readXML=function(url)...{
varselectXML;
//如果它受支持,采用标准的2级DOM技术
if(document.implementation&&document.implementation.createDocument)...{
//创建新的Document对象
selectXML=document.implementation.createDocument("","",null);
//设置装载完毕时触发事件
selectXML.onload=function()...{
alert("加载完成");
}
selectXML.load(url);
}else...{//IE浏览器创建Document对象
selectXML=newActiveXObject("Microsoft.XMLDOM");
//设置onload
selectXML.onreadystatechange=function()...{
if(selectXML.readyState==4)...{
alert("加载完成");
}
}
selectXML.load(url);
}
this.xml=selectXML;
}
/**//**
*遍历xml
*@authorBluesLee
*@lastModifBluesLee
*@createDate2007-10-13
*@modifDate2007-10-15
*@version1.0
*/
SelectLevel.prototype.iteratorXML=function(node,level)...{
varn=node;
if(n==null)...{
n=this.xml.documentElement;
}
if(level==null)...{
level=0;
}
if(n.nodeType==3)...{
for(vari=0;i<level;i++)...{
document.write("-");
}
document.write(n.data.trim()+"<br>");
}else...{
for(varm=n.firstChild;m!=null;m=m.nextSibling)...{
this.iteratorXML(m,level+1);
}
}
}
/**//**
*下拉联动
*@authorBluesLee
*@lastModifBluesLee
*@createDate2007-10-13
*@modifDate2007-10-15
*@version1.0
*/
SelectLevel.prototype.changeSelect=function()...{
varcity=document.getElementById(this.childName);
varprovince=document.getElementById(this.parentName);
city.options.length=0;
if(province.value==null||province.value=="")...{
city.options.length=1;
city.options[0].text="请选择…";
return;
}
varcitys=this.provinces[this[province.value]].getElementsByTagName(this.childName);
if(citys.length==0)...{
city.options.length=city.options.length+1;
city.options[city.options.length-1].value=province.value;
for(vari=0;i<province.options.length;i++)...{
if(province.options[i].selected)...{
city.options[city.options.length-1].text=province.options[i].text;
return;
}
}
return;
}
city.options.length=citys.length;
for(vari=0;i<citys.length;i++)...{
city.options[i].value=citys[i].getAttribute(this.keyName);
city.options[i].text=citys[i].firstChild.data.trim();
}
}
/**//**
*初始化下拉列表
*@authorBluesLee
*@lastModifBluesLee
*@createDate2007-10-13
*@modifDate2007-10-15
*@version1.0
*/
SelectLevel.prototype.init=function(parent,province,city)...{
this.provinces=this.xml.getElementsByTagName(this.parentName);
varselectProvince=document.createElement("select");
varselectCity=document.createElement("select");
varobj=this;
selectProvince.setAttribute("name",this.parentName);
selectProvince.setAttribute("id",this.parentName);
selectProvince.attachEvent("onchange",function()...{obj.changeSelect();});
selectProvince.options.length=this.provinces.length+1;
selectProvince.options[0].text="请选择…";
selectCity.setAttribute("name",this.childName);
selectCity.setAttribute("id",this.childName);
selectCity.options.length=1;
selectCity.options[0].text="请选择…";
for(vari=0;i<this.provinces.length;i++)...{
SelectLevel.prototype[this.provinces[i].getAttribute(this.keyName)]=i;
selectProvince.options[i+1].value=this.provinces[i].getAttribute(this.keyName);
selectProvince.options[i+1].text=this.provinces[i].firstChild.data.trim();
if(this.provinces[i].getAttribute(this.keyName)==province)...{
selectProvince.options[i+1].selected=true;
varcitys=this.provinces[i].getElementsByTagName(this.childName);
selectCity.options.length=citys.length+1;
for(varj=0;j<citys.length;j++)...{
selectCity.options[j+1].value=citys[j].getAttribute(this.keyName);
selectCity.options[j+1].text=citys[j].firstChild.data.trim();
if(citys[j].getAttribute(this.keyName)==city)...{
selectCity.options[j+1].selected=true;
}
}
}
}
parent.appendChild(selectProvince);
parent.appendChild(selectCity);
}
String.prototype.trim=function()...{
returnthis.replace(/^s*/g,"").replace(/s*$/g,"");
}
//测试
varnewXML=newSelectLevel();
newXML.readXML("select.xml");
//newXML.iteratorXML(null,-2);
newXML.init(document.body,"sx","bj");
</script>