我是真的火了!骂了隔壁的!怎么又错了!求教。
<table width="100%" cellspacing="10px">
  <tr>
    <td>&nbsp;&nbsp;营业厅区域:<select name="barea" onchange="areaChange(0)"><option selected="selected">请选择</option></select></td>
  </tr>
  <tr>
    <td>&nbsp;&nbsp;营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
  </tr>
  <tr>
    <td>&nbsp;&nbsp;营业厅区域:<select name="barea" onchange="areaChange(1)"><option selected="selected">请选择</option></select></td>
  </tr>
  <tr>
    <td>&nbsp;&nbsp;营业厅名称:<select name="hall"><option selected="selected">请选择</option></select></td>
  </tr>
  <tr>
    <td>&nbsp;&nbsp;营业厅区域:<select name="barea" onchange="areaChange(2)"><option selected="selected">请选择</option></select></td>
  </tr>
  <tr>
    <td>&nbsp;&nbsp;营业厅名称:<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>

解决方案 »

  1.   

    忘了描述问题了。。郁闷的头晕。
    问题是:运行时候出现barea改变,而hall下拉列表的值未清空的情况,且IE提示 var halls=city.selectSingleNode("area[@value='"+selectedBarea+"']").childNodes;
    这一行缺少对象,我想应该描述清楚了吧。坐等楼下高人。
      

  2.   

    我在火狐里面调试也没问题的代码在IE里面也出现了和你相同的问题
     $("#" + hrleft + " input:checked")
    LZ用火狐调试看看?
      

  3.   

    function areaChange(n) {
        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下是没问题
      

  4.   


    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的方法问题
    我是新手,不知道这个对你有没有帮助
      

  5.   

    不好意思,是Microsoft拼错了,IE也支持的
      

  6.   

    完成!
    一点点小bug,忽略之。
    感谢大家,分敬上!