【求助】JS取XML值的问题
时间:2006-07-06
来源:互联网
<script language="javascript" type="text/javascript">
var XMLDoc=new ActiveXObject("Microsoft.XMLDOM");
var XmlSrc="MaterialClass.xml";
function BindSelect(StrXMLSrc,ObjSelectName)
{
XMLDoc.async=true;
XMLDoc.onreadystatechange=Function("LoadComplete('"+ObjSelectName+"');");
XMLDoc.load(StrXMLSrc);
}
function LoadComplete(ObjSelectName)
{
var objSelect=document.all[ObjSelectName];
var aryXMLNodes;
var node;
if(objSelect==null)
return;
try
{
var iReadyState=XMLDoc.readyState;
}
catch(e)
{
return;
}
if(iReadyState!=4)return;
if(XMLDoc!=null&&XMLDoc.xml!="")
{
objSelect.length=0;
aryXMLNodes=XMLDoc.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(XmlSrc,"MaterialClass1");
}
catch(e)
{
setTimeout("Init()",1000)
}
}
Init();
</script>
<body>
<p>多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)</p>
<form action="?" method="get">
<select name="IDA" id="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="IDA" id="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="IDA" id="MaterialClass3"></select>
<input name="" type="submit" value="提交">
</form>
下面是xml数据-----MaterialClass.xml
<?xml version="1.0" encoding="GB2312"?>
<MaterialClasses>
<MaterialClass IDA="1" MaterialClassCode="01" Description="黑色及有色金属"/>
<MaterialClass IDA="2" MaterialClassCode="02" Description="水泥、砂石砖瓦、砼"/>
<MaterialClass IDA="3" MaterialClassCode="03" Description="木、竹材及其制品"/>
</MaterialClasses>
===============MaterialClass01.xml=========
<?xml version="1.0" encoding="GB2312"?>
<MaterialClasses>
<MaterialClass MaterialClassCode="0101" IDA="1" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="2" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="3" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="4" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="5" Description="圆钢"/>
<MaterialClass MaterialClassCode="0102" IDA="6" Description="钢筋、盘条"/>
<MaterialClass MaterialClassCode="0103" IDA="7" Description="钢丝、钢棒"/>
</MaterialClasses>
===========================================================
我想问的是
当表单FORM提交后SELECT只能取到XML文件里MaterialClassCode的值
但是我想取的是IDA的值,请问该怎样修改JS.并请高手注释一下JS中的每行功能说明,万分感谢!(本人还在学习阶段,对JS中的功能看不懂)
注:MaterialClassCode的值是为了在SELECT中指定XML文件名用的.
[ 本帖由 521o 最后编辑于 2006-7-8 09:38 ]
var XMLDoc=new ActiveXObject("Microsoft.XMLDOM");
var XmlSrc="MaterialClass.xml";
function BindSelect(StrXMLSrc,ObjSelectName)
{
XMLDoc.async=true;
XMLDoc.onreadystatechange=Function("LoadComplete('"+ObjSelectName+"');");
XMLDoc.load(StrXMLSrc);
}
function LoadComplete(ObjSelectName)
{
var objSelect=document.all[ObjSelectName];
var aryXMLNodes;
var node;
if(objSelect==null)
return;
try
{
var iReadyState=XMLDoc.readyState;
}
catch(e)
{
return;
}
if(iReadyState!=4)return;
if(XMLDoc!=null&&XMLDoc.xml!="")
{
objSelect.length=0;
aryXMLNodes=XMLDoc.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(XmlSrc,"MaterialClass1");
}
catch(e)
{
setTimeout("Init()",1000)
}
}
Init();
</script>
<body>
<p>多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)</p>
<form action="?" method="get">
<select name="IDA" id="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="IDA" id="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="IDA" id="MaterialClass3"></select>
<input name="" type="submit" value="提交">
</form>
下面是xml数据-----MaterialClass.xml
<?xml version="1.0" encoding="GB2312"?>
<MaterialClasses>
<MaterialClass IDA="1" MaterialClassCode="01" Description="黑色及有色金属"/>
<MaterialClass IDA="2" MaterialClassCode="02" Description="水泥、砂石砖瓦、砼"/>
<MaterialClass IDA="3" MaterialClassCode="03" Description="木、竹材及其制品"/>
</MaterialClasses>
===============MaterialClass01.xml=========
<?xml version="1.0" encoding="GB2312"?>
<MaterialClasses>
<MaterialClass MaterialClassCode="0101" IDA="1" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="2" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="3" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="4" Description="圆钢"/>
<MaterialClass MaterialClassCode="0101" IDA="5" Description="圆钢"/>
<MaterialClass MaterialClassCode="0102" IDA="6" Description="钢筋、盘条"/>
<MaterialClass MaterialClassCode="0103" IDA="7" Description="钢丝、钢棒"/>
</MaterialClasses>
===========================================================
我想问的是
当表单FORM提交后SELECT只能取到XML文件里MaterialClassCode的值
但是我想取的是IDA的值,请问该怎样修改JS.并请高手注释一下JS中的每行功能说明,万分感谢!(本人还在学习阶段,对JS中的功能看不懂)
注:MaterialClassCode的值是为了在SELECT中指定XML文件名用的.
[ 本帖由 521o 最后编辑于 2006-7-8 09:38 ]
作者: 521o 发布时间: 2006-07-06
似乎应该将objSelect.options[i]=new Option(node.getAttribute("Description"),node.getAttribute("MaterialClassCode"),node.getAttribute("IDA"));
改为
objSelect.options[i]=new Option(node.getAttribute("Description"),node.getAttribute("IDA"),node.getAttribute("IDA"));
改为
objSelect.options[i]=new Option(node.getAttribute("Description"),node.getAttribute("IDA"),node.getAttribute("IDA"));
作者: 521o 发布时间: 2006-07-07
MaterialClassCode的值是为了在SELECT中指定XML文件名用的.
所以在JS里 node.getAttribute("MaterialClassCode")是不能替换为node.getAttribute("IDA")的
这才是我困扰的地方啊
所以在JS里 node.getAttribute("MaterialClassCode")是不能替换为node.getAttribute("IDA")的
这才是我困扰的地方啊
作者: lly365 发布时间: 2006-07-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28