我的要求: 选择第一个下拉,获取值,通过js去打开一个url查询出一个xml,然后把查出的值加载到第二个下拉框去.
我想在他查询的时候,我把第二个下拉框暂禁,并且里面显示 loading ... ... ,(在ff里是可以的,但是ie7的时候不这样显示,是不是异步什么的?怎么修改.)js如下://enter
function getdate(obj,list,geturl,par1,showtext)
{
    if(obj.value != 0)
    { 
     
      //enable show
       document.getElementById(list).disabled = true;
     
       //loading
       listremove(document.getElementById(list));
       listAddValue(document.getElementById(list),"0","Loading ...");
       
       //get server
       var URL =geturl +"?"+par1+"="+obj.value;
      
       var retCode=openUrl(URL);
       
       
   getxml(document.getElementById(list),retCode,showtext);
       
       //enable show
       document.getElementById(list).disabled = false;
      
    }
    else
    {
      document.getElementById(list).disabled = true;
    }
}
//clear all
function listremove(obj)
{
    obj.options.length=0;
    //for(var i = obj.options.length; i>= 0; --i)
    //{
    //   obj.options.remove(i);
    //}
}//add a date
function listAddValue(obj,l_value,l_text)
{
    var oOption = document.createElement('OPTION');
    oOption.text = l_text;
    oOption.value = l_value;
    obj.options.add(oOption);
}//read xml and add list value
function getxml(obj,xmldata,showtext)
{
  var xmlDoc;
  var browse="";
  if (window.ActiveXObject)
  {
        xmlDoc= new ActiveXObject("Msxml2.DOMDocument");
        xmlDoc.async=false;
        xmlDoc.loadXML(xmldata);
        browse="ie";
  }
  else if (document.implementation && document.implementation.createDocument)
  {
      xmlDoc= document.implementation.createDocument('', '', null);
      var oParser=new DOMParser();
      xmlDoc=oParser.parseFromString(xmldata,"text/xml");
      browse="ff";
  }
 
  listremove(obj);
  listAddValue(obj,"0",showtext);
   if(browse=="ff")
   {
       var cNodes = xmlDoc.getElementsByTagName("Root");
       for(j=0;j<cNodes.length;j++)
        {
           var servername=xmlDoc.getElementsByTagName("ColName")[j].childNodes[0].nodeValue;
           var serverid=xmlDoc.getElementsByTagName("ColID")[j].childNodes[0].nodeValue;
          
           listAddValue(obj,serverid,servername);
        }
   }
   else if(browse == "ie")
   {
        var state = xmlDoc.readyState;
        if (state == 4)
        {
            var oNodes = xmlDoc.selectNodes("//Table/Root");
            for(j=0;j<oNodes.length;j++)
            {
                var servername=oNodes[j].childNodes[0].text;
                var serverid=oNodes[j].childNodes[1].text;
                
                
                listAddValue(obj,serverid,servername);
            }
        }
   }    
 
}//open url and get value
function   openUrl(url)
{  
    if(window.XMLHttpRequest)  
    {   
       objxml   =   new   XMLHttpRequest();   
    }  
    else if(window.ActiveXObject)  
    {   
       objxml   =   new   ActiveXObject("Msxml2.XMLHTTP");   
    }   
    
    objxml.open("GET",url,false);
    
    objxml.send(""); 
    retInfo=objxml.responseText;          
    if   (objxml.status== "200 ")
    {  
            return   retInfo;  
    }  
    else
    {  
            return   "";  
    }  
}  

解决方案 »

  1.   

    你的源码://add a date
    function listAddValue(obj,l_value,l_text)
    {
        var oOption = document.createElement('OPTION');
        oOption.text = l_text;
        oOption.value = l_value;
        obj.options.add(oOption);
    }我给出的代码,试一试。//add a date
    function listAddValue(obj,l_value,l_text)
    {
        var oOption = new Option(l_text,l_value);
        if(window.event){
            obj.options.add(oOption);
        }else{
            obj.options.add(oOption,null);
        }
    } 如果可以,请回复。=== 结贴,给分 ===
    得到满意的答案,立即结贴给分,是一种良好的习惯和美德
      

  2.   

    好象不行,我的禁用下拉和加载 Loading ... ... 写在 获取数据之前呢.
    这个是加载数据方法.//enable show
           document.getElementById(list).disabled = true;
         
           //loading
           listremove(document.getElementById(list));
           listAddValue(document.getElementById(list),"0","Loading ...");
           
           //get server
           var URL =geturl +"?"+par1+"="+obj.value;