右边列表框的选项可以向左移动,或者移回去,且左边的选项可以上下移动?
yes

解决方案 »

  1.   

    <SELECT multiple name=sel1 size=6> <OPTION>1</OPTION> <OPTION>3</OPTION> 
      <OPTION>5</OPTION> <OPTION>2</OPTION> <OPTION>4</OPTION> 
    <OPTION>6</OPTION></SELECT> <SELECT multiple name=sel2 size=6></SELECT> <INPUT onclick=moveTo(sel1,sel2) type=button value=">>"> <INPUT onclick=moveTo(sel2,sel1) type=button value="<<"> <INPUT onclick='move(sel1,"up")' type=button value=up> <INPUT onclick='move(sel1,"down")' type=button value=down>
    <SCRIPT>
    //**freefalcon**//
    function moveTo(sel1,sel2){
      for(i=sel1.options.length-1;i>=0;i--)
        if(sel1.options[i].selected){
           op=sel1.options[i].cloneNode(true);
           sel2.appendChild(op);
           sel1.options[i]=null;
        }
    }
    function move(sel,dir){
      if(dir=="up")  
        for(i=0;i<sel.options.length;i++)
         if(sel.options[i].selected){
             if(i==0)break;       
             sel.options[i].swapNode(sel.options[i-1])         
         }
      if(dir=="down")
        for(i=sel.options.length-1;i>=0;i--)
         if(sel.options[i].selected){
             if(i==sel.options.length-1)break;       
             sel.options[i].swapNode(sel.options[i+1]);
         }   
    }
    </SCRIPT>
      

  2.   

    freefalcon(心宇):
        能给一下重置的思路,或代码吗?
      

  3.   

    <script language="javascript">
    //+----------------------------------------------------------------------+
    //开始
    var userSelect = new Object();
    // +---------------------------------------+
    //配置
    userSelect.obj_slt_name = new Array();
    userSelect.obj_slt_name[userSelect.obj_slt_name.length] = "a";
    userSelect.obj_slt_name[userSelect.obj_slt_name.length] = "b";
    // +---------------------------------------+
    //测试用
    var value_right  = new Array(),
    value_left       = new Array(),
    value_select     = new Array(); value_right[value_right.length] = "a";
    value_right[value_right.length] = "b";
    value_right[value_right.length] = "c";
    value_right[value_right.length] = "d";
    value_right[value_right.length] = "e";
    value_right[value_right.length] = "f";
    value_right[value_right.length] = "g";
    value_right[value_right.length] = "h";
    value_right[value_right.length] = "i";
    value_right[value_right.length] = "j";
    // +---------------------------------------+
    //初始化
    userSelect.init = function(obj_slt_name)
    { }
    // +---------------------------------------+
    //还原
    userSelect.resect =function(obj_slt_name)
    { }
    // +---------------------------------------+
    //上移
    userSelect.up = function(obj_slt)
    {
        obj_slt = "document.all."+obj_slt;
    userSelect.move(obj_slt, "up");
    }
    // +---------------------------------------+
    //下移
    userSelect.down = function(obj_slt)
    {
    obj_slt = "document.all."+obj_slt;
    userSelect.move(obj_slt, "down");
    }
    // +---------------------------------------+
    //移动
    userSelect.move = function(obj_slt, act)
    {
      if(act=="up")  
    for(i=0;i<obj_slt.options.length;i++)
     if(obj_slt.options[i].selected){
     if(i==0)break;       
     obj_slt.options[i].swapNode(obj_slt.options[i-1]);        
     }
      if(act=="down")
    for(i=obj_slt.options.length-1;i>=0;i--)
     if(obj_slt.options[i].selected){
     if(i==obj_slt.options.length-1)break;       
     obj_slt.options[i].swapNode(obj_slt.options[i+1]);
     }
    }
    // +---------------------------------------+
    //添加
    userSelect.add = function(obj_slt, res_slt)
    {
    obj_slt = "document.all."+obj_slt;
    res_slt = "document.all."+res_slt;
    eval("userSelect.barter("+obj_slt+", "+res_slt+")");
    }
    // +---------------------------------------+
    //删除
    userSelect.del = function(obj_slt, res_slt)
    {
    obj_slt = "document.all."+obj_slt;
    res_slt = "document.all."+res_slt;
    eval("userSelect.barter("+obj_slt+", "+res_slt+")"); }
    // +---------------------------------------+
    //交换
    userSelect.barter = function(obj_selt, res_slt)
    {
      for(i=res_slt.options.length-1;i>=0;i--)
    if(res_slt.options[i].selected){
       op=res_slt.options[i].cloneNode(true);
       obj_selt.appendChild(op);
       res_slt.options[i]=null;
    }
    }
    // +---------------------------------------+
    //生成
    //配置
    for (s=0; s<userSelect.obj_slt_name.length; s++) {
    var strs = new Array();
    //定义表格
    strs[strs.length] = "<TABLE width='75%' border='1'>";
    strs[strs.length] = "<TR>";
    strs[strs.length] = "<TD rowspan='2'>";
    //定义左列表框
    strs[strs.length] = "<SELECT name=\'"+userSelect.obj_slt_name[s]+"\' id=\'"+userSelect.obj_slt_name[s]+"\'size='10' multiple>";
    strs[strs.length] = "</SELECT>";
    strs[strs.length] = "</TD>"; strs[strs.length] = "<TD>";
    strs[strs.length] = "<INPUT name=\'"+userSelect.obj_slt_name[s]+"res"+"\' id=\'"+userSelect.obj_slt_name[s]+"\' type='button' onClick='userSelect.add(this.name, this.id)' value='添加'>";
    strs[strs.length] = "</TD>"; strs[strs.length] = "<TD>";
    //定义右列表框
    strs[strs.length] = "<SELECT name=\'"+userSelect.obj_slt_name[s]+"res"+"\' size='10' multiple id='s1'>";
    //循环生成列表值
    for (k =0; k<value_right.length; k++) {
    strs[strs.length] = "<OPTION value=\'"+value_right[k]+"\'>"+value_right[k]+"</OPTION>";
    }
    strs[strs.length] = "</SELECT>";
    strs[strs.length] = "</TD>";
    strs[strs.length] = "</TR>"; strs[strs.length] = "<TR>";
    strs[strs.length] = "<TD>";
    strs[strs.length] = "<INPUT name=\'"+userSelect.obj_slt_name[s]+"\' id=\'"+userSelect.obj_slt_name[s]+"res"+"\' type='button' onClick='userSelect.del(this.name, this.id)' value='删除'>";
    strs[strs.length] = "</TD>";
    strs[strs.length] = "</TR>"; strs[strs.length] = "<TR>";
    strs[strs.length] = "<TD>";
    strs[strs.length] = "<INPUT type='button' id="+userSelect.obj_slt_name[s]+" name='Submit3' onClick='userSelect.up(this.id)' value='上移'>";
    strs[strs.length] = "<INPUT type='button' id="+userSelect.obj_slt_name[s]+" name='Submit4'  onClick='userSelect.down(this.id)' value='下移'>";
    strs[strs.length] = "</TD>";
    strs[strs.length] = "<TD>&nbsp;</TD>";
    strs[strs.length] = "<TD>&nbsp;</TD>";
    strs[strs.length] = "</TR>";
    strs[strs.length] = "</TABLE>"; //显示列表框
    for (i=0; i<strs.length; i++) {
    str = "document.write(strs[i])";
    //alert(i);
    //alert(strs[i]); eval(str); 
    }
    }
    //+----------------------------------------------------------------------+
    </SCRIPT>
      

  4.   

    补上reset功能,不过觉得reset写得不好,没有找到比较直接的函数<SELECT multiple name=sel1 size=6> <OPTION>1</OPTION> <OPTION>3</OPTION> 
      <OPTION>5</OPTION> <OPTION>2</OPTION> <OPTION>4</OPTION> 
    <OPTION>6</OPTION></SELECT> <SELECT multiple name=sel2 size=6></SELECT> <INPUT onclick=moveTo(sel1,sel2) type=button value=">>"> <INPUT onclick=moveTo(sel2,sel1) type=button value="<<"> <INPUT onclick='move(sel1,"up")' type=button value=up> <INPUT onclick='move(sel1,"down")' type=button value=down>
    <INPUT onclick='reset(sel1,sel2)' type=button value=reset>
    <SCRIPT>
    //**freefalcon**//
    function moveTo(sel1,sel2){
      for(i=sel1.options.length-1;i>=0;i--)
        if(sel1.options[i].selected){
           op=sel1.options[i].cloneNode(true);
           sel2.appendChild(op);
           sel1.options[i]=null;
        }
    }
    function move(sel,dir){
      if(dir=="up")  
        for(i=0;i<sel.options.length;i++)
         if(sel.options[i].selected){
             if(i==0)break;       
             sel.options[i].swapNode(sel.options[i-1])         
         }
      if(dir=="down")
        for(i=sel.options.length-1;i>=0;i--)
         if(sel.options[i].selected){
             if(i==sel.options.length-1)break;       
             sel.options[i].swapNode(sel.options[i+1]);
         }   
    }
    var leftSel=sel1.cloneNode(true);
    var rightSel=sel2.cloneNode(true);
    function reset(sel1,sel2){
       copy(sel1,leftSel);
       copy(sel2,rightSel);
    }
    function copy(sel1,sel2){
      for(i=sel1.length-1;i>=0;i--)
         sel1.options[i]=null;
      for(i=0;i<sel2.length;i++)
         sel1.appendChild(sel2.options[i].cloneNode(true));
    }
    </SCRIPT>