<script type="text/javascript">
   var user1=new callBack(“user1”,"123");
   var user2=new callBack(“user2”,"124");
        var user3=new callBack(“user3”,"125");
    var tj={
    "AT":["+123","+124","+125"],
    "UK":["(23)123","(23)124","(23)125"],
    "US":["123","124","125"],
    "DE":["223","224","225"],
    "IT":["1122","4555","55656"]
    "PRC":[user1,user2,user6]
    };
    var tj["PRC"]=new Array();
    tj["PRC"][0]=user1;
    tj["PRC"][1]=user1;
    tj["PRC"][2]=user1;
    
        function ch()
    {
        var cs=document.getElementById("country");
        var ct=document.getElementById("city");
        ct.options.length=0;
        var ops=[];
        for(var i=0;i<cs.options.length;i++)
        {
            if(cs.options[i].selected)
            {
                ops.push(cs.options[i].value);
            }
        }
                var phones=new Array();
        var ln=0;
        for(var j=0;j<ops.length;j++)
        {
            var tv=ops[j];
            var ta=tj[tv]||[];
            for(var k=0;k<ta.length;k++)
            {
               phones[ln++]=ta[k];
               
            }
        }
        
       
      
       
       phones.sort(sortFuncDesc);
       //alert("sort()="+phones[0]+","+phones[1]+","+phones[2]+","+phones[3]+","+phones[4]+","+phones[5]+",");
       //alert("sort()="+sortPhones[0]+","+sortPhones[1]+","+sortPhones[2]+","+sortPhones[3]+","+sortPhones[4]+","+sortPhones[5]+",");
       var selectNumber="IT2";
       for(var j=0;j<ln;j++){
            var op=document.createElement("option");
                op.value=phones[j].age;
                op.id=phones[j].age;
                op.innerHTML=phones[j].age;
               
           if(selectNumber==phones[j].age){
               op.selected=true;               //ct.options[j].selected=true;
               alert("select  "+selectNumber.localeCompare("(23)124"));
               
               //var selectEle=document.getElementById("(23)124");
               //var html = '<OPTION value=\''+phones[j]+'\' id=\''+phones[j]+'\' '+'>'+phones[j]+'</OPTION>';;
               //$("(23)124").html(html);
               
           }
            ct.appendChild(op);
           
       }
    }
    
    function sortFuncDesc(record1, record2) {
       var value1 = record1.age.toLowerCase();
      var value2 = record2.age.toLowerCase();
      if (value1 > value2) return(-1);
      if (value1 < value2) return(1);
      return(0);
    }
    
      function callBack(no,age){
            var cBack = callBack.prototype;
             cBack.no=no; 
             cBack.no= function () {
               return cBack.no;
            }
            cBack.age== function () {
               return cBack.age;
            }         
     }
     
     
     }
    
  </script>
 </HEAD> <BODY>
  <table>
      <tr>
          <td>Country</td>
          <td>
              <select id="country" name="country" multiple="true" size="3" onchange="ch()">
                  <option value="-">--Please Select</option>
                  <option id="1" value="AT">Austria</option>
                  <option id="2" value="UK">United Kingdom</option>
                  <option id="3" value="US">United States</option>
                  <option id="4" value="DE">Germany</option>
                  <option id="6" value="IT">Italy</option>
                  <option id="7" value="PRC">China</option>
              </select>
          <td>City</td>
          <td>
            <select id="city" name="city">
            </select>
          </td>
      </tr>
 </table>
 </BODY>
</HTML>
请问错在那里呀?

解决方案 »

  1.   

    你的代码错误比较多,另外,字符串和对象没有区别对待。可以运行的代码如下<script type="text/javascript">
      var user1 = new callBack("user1", "123");
      var user2 = new callBack("user2", "124");
      var user3 = new callBack("user3", "125");
      var tj = {
        "AT": ["+123", "+124", "+125"],
        "UK": ["(23)123", "(23)124", "(23)125"],
        "US": ["123", "124", "125"],
        "DE": ["223", "224", "225"],
        "IT": ["1122", "4555", "55656"],
        "PRC": [user1, user2, user3]
      };  function ch() {
        var cs = document.getElementById("country");
        var ct = document.getElementById("city");
        ct.options.length = 0;
        var ops = [];
        for (var i = 0; i < cs.options.length; i++) {
          if (cs.options[i].selected) {
            ops.push(cs.options[i].value);
          }
        }
        var phones = new Array();
        var ln = 0;    for (var j = 0; j < ops.length; j++) {
          var tv = ops[j];
          var ta = tj[tv] || [];
          for (var k = 0; k < ta.length; k++) {
            phones[ln++] = ta[k];      }
        }    phones.sort(sortFuncDesc);    //alert("sort()="+phones[0]+","+phones[1]+","+phones[2]+","+phones[3]+","+phones[4]+","+phones[5]+",");
        //alert("sort()="+sortPhones[0]+","+sortPhones[1]+","+sortPhones[2]+","+sortPhones[3]+","+sortPhones[4]+","+sortPhones[5]+",");
        var selectNumber = "IT2";
        for (var j = 0; j < ln; j++) {
          var op = document.createElement("option");
          op.value = phones[j].age ? phones[j].age : phones[j];
          op.id = phones[j].age ? phones[j].age : phones[j];
          op.innerHTML = phones[j].age ? phones[j].age : phones[j];      if (selectNumber == (phones[j].age ? phones[j].age : phones[j])) {
            op.selected = true;        //ct.options[j].selected=true;
            alert("select " + selectNumber.localeCompare("(23)124"));        //var selectEle=document.getElementById("(23)124");
            //var html = '<OPTION value=\''+phones[j]+'\' id=\''+phones[j]+'\' '+'>'+phones[j]+'</OPTION>';;
            //$("(23)124").html(html);      }
          ct.appendChild(op);    }
      }  function sortFuncDesc(record1, record2) {
        var value1 = typeof (record1) == "object" ? record1.age.toLowerCase() : record1.toLowerCase();
        var value2 = typeof (record2) == "object" ? record2.age.toLowerCase() : record2.toLowerCase();
        if (value1 > value2) return (-1);
        if (value1 < value2) return (1);
        return (0);
      }  function callBack(no, age) {
        this.no = no;
        this.age = age;  }
    </script>
    </HEAD>
    <body>
      <table>
        <tr>
          <td>
            Country
          </td>
          <td>
            <select id="country" name="country" multiple="true" size="3" onchange="ch()">
              <option value="-">--Please Select</option>
              <option id="1" value="AT">Austria</option>
              <option id="2" value="UK">United Kingdom</option>
              <option id="3" value="US">United States</option>
              <option id="4" value="DE">Germany</option>
              <option id="6" value="IT">Italy</option>
              <option id="7" value="PRC">China</option>
            </select>
            <td>
              City
            </td>
            <td>
              <select id="city" name="city">
              </select>
            </td>
        </tr>
      </table>
    </body>
    </HTML> 
      

  2.   

    <script type="text/javascript">
      var user1 = new callBack("user1", "123");
      var user2 = new callBack("user2", "124");
      var user3 = new callBack("user3", "125");
      
      var tj=new Array();
      tj["AT"]=new Array();
      tj["AT"][0]=new callBack("ATuser1", "123111");
      tj["AT"][1]=new callBack("ATuser2", "123111");
      tj["AT"][2]=new callBack("ATuser3", "123111");
      
      
      tj["UK"]=new Array();
      tj["UK"][0]=new callBack("UKuser1", "UK123111");
      tj["UK"][1]=new callBack("UKuser2", "UK123111");
      tj["UK"][2]=new callBack("UKuser3", "UK123111");
      
      
      tj["US"]=new Array();
      tj["US"][0]=new callBack("USuser1", "US123111");
      tj["US"][1]=new callBack("USuser2", "US123111");
      tj["US"][2]=new callBack("USuser3", "US123111");
      
      tj["DE"]=new Array();
      tj["DE"][0]=new callBack("DEuser1", "DE123111");
      tj["DE"][1]=new callBack("DEuser2", "DE123111");
      tj["DE"][2]=new callBack("DEuser3", "DE123111");
      
      tj["IT"]=new Array();
      tj["IT"][0]=new callBack("ITuser1", "IT123111");
      tj["IT"][1]=new callBack("ITuser2", "IT123111");
      tj["IT"][2]=new callBack("ITuser3", "IT123111");
      
      tj["AT"]=new Array();
      tj["AT"][0]=new callBack("ATuser1", "AT123111");
      tj["AT"][1]=new callBack("ATuser2", "AT123111");
      tj["AT"][2]=new callBack("ATuser3", "AT123111");
      
      tj["PRC"]=new Array();
      tj["PRC"][0]=new callBack("PRCuser1", "PRC123111");
      tj["PRC"][1]=new callBack("PRCuser2", "PRC123111");
      tj["PRC"][2]=new callBack("PRCuser3", "PRC123111");  var records=new Array();
      var index;  function ch() {
        var cs = document.getElementById("country");
        var ct = document.getElementById("city");
        ct.options.length = 0;
        var ops = [];
        for (var i = 0; i < cs.options.length; i++) {
          if (cs.options[i].selected) {
            ops.push(cs.options[i].value);
          }
        }
        var phones = new Array();
        var ln = 0;    for (var j = 0; j < ops.length; j++) {
          var tv = ops[j];
          var ta = tj[tv] || [];
          for (var k = 0; k < ta.length; k++) {
            phones[ln++] = ta[k];      }
        }    phones.sort(sortFuncDesc);
        records=phones;    //alert("sort()="+phones[0]+","+phones[1]+","+phones[2]+","+phones[3]+","+phones[4]+","+phones[5]+",");
        //alert("sort()="+sortPhones[0]+","+sortPhones[1]+","+sortPhones[2]+","+sortPhones[3]+","+sortPhones[4]+","+sortPhones[5]+",");
        var selectNumber = "IT2";
        for (var j = 0; j < ln; j++) {
          var op = document.createElement("option");
          op.value = phones[j].age;
          op.id = phones[j].age;
          op.innerHTML = phones[j].age;
          //op.onclick=selectRecord(j);
         
                if (selectNumber == (phones[j].age ? phones[j].age : phones[j])) {
            op.selected = true;        //ct.options[j].selected=true;
            alert("select " + selectNumber.localeCompare("(23)124"));        //var selectEle=document.getElementById("(23)124");
            //var html = '<OPTION value=\''+phones[j]+'\' id=\''+phones[j]+'\' '+'>'+phones[j]+'</OPTION>';;
            //$("(23)124").html(html);      }
          ct.appendChild(op);    }
      }  function sortFuncDesc(record1, record2) {
        var value1 = record1.age;
        var value2 = record1.age;
        if (value1 > value2) return (-1);
        if (value1 < value2) return (1);
        return (0);
      }  function callBack(no, age) {
        this.no = no;
        this.age = age;  }
      
      function selectRecord(j){
          //alert("index="+index);
          alert("record[j].no="+records[0].no);
          
          var cty = document.getElementById("city");
          var ind=0;
          alert("cty.options.length="+cty.options.length);
          for (var i = 0; i < cty.options.length; i++) {
            if (cty.options[i].selected) {
                ind=i;
          }
          
          var ct = document.getElementById("cityName");
          ct.value=records[ind].no;
          
        }
      }
    </script>
    </HEAD>
    <body>
      <table>
        <tr>
          <td>
            Country
          </td>
          <td>
            <select id="country" name="country" multiple="true" size="3" onchange="ch()">
              <option value="-">--Please Select</option>
              <option id="1" value="AT">Austria</option>
              <option id="2" value="UK">United Kingdom</option>
              <option id="3" value="US">United States</option>
              <option id="4" value="DE">Germany</option>
              <option id="6" value="IT">Italy</option>
              <option id="7" value="PRC">China</option>
            </select>
            <td>
              City
            </td>
            <td>
              <select id="city" name="city" onchange="selectRecord()">
              </select>
            </td>
            
            <td>
              <input type="text" id="cityName"/>
            </td>
        </tr>
      </table>
    </body>
    </HTML>