我是真的火了!骂了隔壁的!怎么又错了!求教。
<table width="100%" cellspacing="10px">
<tr>
<td> 营业厅区域:<select name="barea" onchange="areaChange(0)"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅区域:<select name="barea" onchange="areaChange(1)"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅区域:<select name="barea" onchange="areaChange(2)"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
</tr>
</table>
function areaChange(n)
{
var barea = document.getElementsByName("barea");
var hall = document.getElementsByName("hall");
hall.innerHTML='';
var selectedBarea=barea[n].options[barea[n].selectedIndex].value;
var city=dom.documentElement.childNodes[0].childNodes[0];
var halls=city.selectSingleNode("area[@value='"+selectedBarea+"']").childNodes;
for(var f=0;f<hall.length;f++)
{
var text=halls[f].getAttribute("name");
var value=halls[f].getAttribute("value");
hall[n].options[hall[n].length]=new Option(text,value);
}
}
<myxml>
<district>
<city name="苏州" value="1000">
<area name="沧浪区" value="1100">
<hall name="苏州职业大学动感品牌店" value="1101"></hall>
<hall name="苏州集团客户VIP营业厅" value="1102"></hall>
<hall name="苏州家乐福三香路指定营业店" value="1103"></hall>
<hall name="苏州南园路指定营业店" value="1104"></hall>
<hall name="苏州胥江路指定营业店" value="1105"></hall>
</area>
<area name="金阊区" value="1200">
<hall name="苏州五星石路指定专营店" value="1201"></hall>
<hall name="苏州长青指定专营店" value="1202"></hall>
<hall name="苏州桐泾北路指定营业店" value="1203"></hall>
<hall name="苏州工艺美校指定营业店" value="1204"></hall>
<hall name="苏州仁安路指定营业店" value="1205"></hall>
<hall name="苏州永林新村指定营业店" value="1206"></hall>
</area>
<table width="100%" cellspacing="10px">
<tr>
<td> 营业厅区域:<select name="barea" onchange="areaChange(0)"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅区域:<select name="barea" onchange="areaChange(1)"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅区域:<select name="barea" onchange="areaChange(2)"><option selected="selected">请选择</option></select></td>
</tr>
<tr>
<td> 营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
</tr>
</table>
function areaChange(n)
{
var barea = document.getElementsByName("barea");
var hall = document.getElementsByName("hall");
hall.innerHTML='';
var selectedBarea=barea[n].options[barea[n].selectedIndex].value;
var city=dom.documentElement.childNodes[0].childNodes[0];
var halls=city.selectSingleNode("area[@value='"+selectedBarea+"']").childNodes;
for(var f=0;f<hall.length;f++)
{
var text=halls[f].getAttribute("name");
var value=halls[f].getAttribute("value");
hall[n].options[hall[n].length]=new Option(text,value);
}
}
<myxml>
<district>
<city name="苏州" value="1000">
<area name="沧浪区" value="1100">
<hall name="苏州职业大学动感品牌店" value="1101"></hall>
<hall name="苏州集团客户VIP营业厅" value="1102"></hall>
<hall name="苏州家乐福三香路指定营业店" value="1103"></hall>
<hall name="苏州南园路指定营业店" value="1104"></hall>
<hall name="苏州胥江路指定营业店" value="1105"></hall>
</area>
<area name="金阊区" value="1200">
<hall name="苏州五星石路指定专营店" value="1201"></hall>
<hall name="苏州长青指定专营店" value="1202"></hall>
<hall name="苏州桐泾北路指定营业店" value="1203"></hall>
<hall name="苏州工艺美校指定营业店" value="1204"></hall>
<hall name="苏州仁安路指定营业店" value="1205"></hall>
<hall name="苏州永林新村指定营业店" value="1206"></hall>
</area>
问题是:运行时候出现barea改变,而hall下拉列表的值未清空的情况,且IE提示 var halls=city.selectSingleNode("area[@value='"+selectedBarea+"']").childNodes;
这一行缺少对象,我想应该描述清楚了吧。坐等楼下高人。
$("#" + hrleft + " input:checked")
LZ用火狐调试看看?
var barea = document.getElementsByName("barea");
var hall = document.getElementsByName("hall");
hall[n].innerHTML = '';
var selectedBarea = barea[n].options[barea[n].selectedIndex].value;
var city = dom.documentElement.childNodes[0].childNodes[0];
var halls = city.selectSingleNode("area[@value='" + selectedBarea + "']").childNodes;
for (var f = 0; f < halls.length; f++) {
var text = halls[f].getAttribute("name");
var value = halls[f].getAttribute("value");
hall[n].options[hall[n].length] = new Option(text, value);
}
}
我在IE8下是没问题
function XmlDom(){
if(window.ActiveXObject){
var arrSignatrues = ["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Mircrosoft.XmlDom"];
for(var i = 0;i < arrSignatrues.length;i ++){
try{
var oXmlDom = new ActiveXObject(arrSignatures[i]);
return oXmlDom;
}catch(oError){
//ignore
}
}
throw new Error("MSXML is not installed on your system");
}else if(document.implementation&&document.implementation.createDocument){
var oXmlDom = document.implementation.createDocument("","",null);
return oXmlDom;
}else{
throw new Error("Your browser doesn't support an XML DOM object.");
}
} function areaChange(n)
{
var dom = XmlDom();
dom .async=false;
dom .load("s.xml");
var barea = document.getElementsByName("barea");
var hall = document.getElementsByName("hall");
hall.innerHTML='';
var selectedBarea=barea[n].options[barea[n].selectedIndex].value;
var city=![-1,]?dom .documentElement.childNodes[0].childNodes[0]:dom .documentElement.childNodes[1].childNodes[1]; //Can compat IE and FF
var halls=selectSingleNode(city,"area",selectedBarea).childNodes;
for(var f=0;f<halls.length;f++)
{
if(halls[f].nodeType != 1)continue; //Get element nodes
var text=halls[f].getAttribute("name");
var value=halls[f].getAttribute("value");
hall[n].options[hall[n].length]=new Option(text,value);
}
}
function selectSingleNode(parentNode,nodeName,nodeValue){
var sub_nodes = parentNode.getElementsByTagName(nodeName);
if(!sub_nodes)return;
alert(nodeValue);
for(var i = 0;i < sub_nodes.length; i ++){
if(sub_nodes[i].getAttribute("value") == nodeValue){
return sub_nodes[i];
break;
}
}
return false;
}
这个在FF上是好的,在IE上我的不支持MSXML,所以测不出来,可以试试
如果还报 var halls=city.selectSingleNode("area[@value='"+selectedBarea+"']").childNodes;
这行的错误的话,会不会是selectSingleNode的方法问题
我是新手,不知道这个对你有没有帮助
一点点小bug,忽略之。
感谢大家,分敬上!