帮你稍微改了下已经能实现你要的功能,暂时只能选择左边的到右边,你自己再优化下就可以了<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0044)http://bbs.euyar.com/test/test_select_01.asp -->
<HTML><HEAD><TITLE>test_select</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT langage="javascript">
{
var my_array=new Array();my_array[0] = new Array("c001","电子商城");my_array[1] = new Array("c001001","时尚手饰");my_array[2] = new Array("c001002","钻石珠宝");my_array[3] = new Array("c001003","极品定制");my_array[4] = new Array("c001004","特卖热卖");my_array[5] = new Array("c001005","珠宝社区");my_array[6] = new Array("c001006","会员俱乐部");my_array[7] = new Array("c001007","优雅购物");my_array[8] = new Array("c001008","优雅天使");my_array[9] = new Array("c002","设计前线");my_array[10] = new Array("c002001","珠宝设计");my_array[11] = new Array("c002002","网页设计");my_array[12] = new Array("c003","优雅人生");my_array[13] = new Array("c003001","优雅生活");my_array[14] = new Array("c003002","美丽人生");allnum=15;
   function left_select(){
      document.form.test.options.length=0;
      document.form.test1.options.length=0;
      //alert(document.form.test.options.length);
      for (i=0;i<allnum;i++){
            if (document.form.str.value.indexOf(my_array[i][0])!=-1){
       document.form.test.options[i]=new Option(my_array[i][1],my_array[i][0]);
       document.form.test.selectedIndex = i ;
}
  }
   }   function right_select(){
      document.form.test.options.length=0;
      document.form.test1.options.length=0;
      for (i=0;i<allnum;i++){
            if (document.form.str.value.indexOf(my_array[i][0])!=-1){
       document.form.test1.options[i]=new Option(my_array[i][1],my_array[i][0]);
       document.form.test.selectedIndex = i ;
}
  }
   }
   
   testStr = "";   function single_select(){
      testStr = testStr +","+ document.form.test.selectedIndex;
      document.form.test.options.length=0;
      //document.form.test1.options.length=0;
  //alert(testStr);
      for (i=0;i<allnum;i++){
            if (document.form.str.value.indexOf(my_array[i][0])!=-1){
              if (testStr.indexOf(i) !=  -1) 
              {
       document.form.test1.options[i]=new Option(my_array[i][1],my_array[i][0]);
       document.form.test.selectedIndex = i ;
      } else {
       document.form.test.options[i]=new Option(my_array[i][1],my_array[i][0]); 
       document.form.test.selectedIndex = i ;
      }
      }
  }
   }}
</SCRIPT><META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY text=#000000 bgColor=#ffffff>
<FORM name=form action=test_select_01_ok.asp method=post>
<TABLE cellSpacing=0 cellPadding=0 width=410 border=0>
  <TBODY>
  <TR align=middle>
    <TD><SELECT style="WIDTH: 110px" multiple size=10 name=test></SELECT> </TD>
    <TD align=middle>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD align=middle height=35><INPUT style="WIDTH: 25px" onclick=right_select() type=button value=">>" name=Button> 
          </TD></TR>
        <TR>
          <TD align=middle height=35><INPUT style="WIDTH: 25px" onclick=single_select() type=button value=">" name=Submit2> 
          </TD></TR>
        <TR>
          <TD align=middle height=35><INPUT style="WIDTH: 25px" onclick=single_select() type=button value="<" name=Submit3> 
          </TD></TR>
        <TR>
          <TD align=middle height=35><INPUT style="WIDTH: 25px" onclick=left_select() type=button value="<<" name=Submit32> 
          </TD></TR></TBODY></TABLE></TD>
    <TD><SELECT style="WIDTH: 110px" multiple size=10 name=test1></SELECT> </TD>
    <TD><INPUT type=submit value=Submit name=Submit> 
</TD></TR></TBODY></TABLE><INPUT type=hidden 
value=c001,c001001,c001002,c001003,c001004,c001005,c001006,c001007,c001008,c002,c002001,c002002,c003,c003001,c003002, 
name=str>
<SCRIPT langage="javascript">left_select()</SCRIPT>
 </FORM></BODY></HTML>