<select name=s1 multiple size=4>
<option value=1>aaaaaa
<option value=2>bbbbbb
<option value=3>cccccc
<option value=4>dddddd
<option value=5>eeeeee
<option value=6>ffffff
<option value=7>gggggg
<option value=8>hhhhhh
</select>
<input type=button name=b1 value=向上 onClick="up()">
<input type=button name=b2 value=向下 onClick="down()">
<input type=button name=b3 value=查看 onClick="show()"><script>
function up() {
  s = document.all.s1;
  v = new Array();
  for(i=0;i<s.length-1;i++) {
    if(! s.options[i].selected && s.options[i+1].selected) {
      v.value = s.options[i].value;
      v.text = s.options[i].text;
      v.selected = s.options[i].selected;
      s.options[i].value = s.options[i+1].value;
      s.options[i].text = s.options[i+1].text;
      s.options[i].selected = s.options[i+1].selected;
      s.options[i+1].value = v.value;
      s.options[i+1].text = v.text;
      s.options[i+1].selected = v.selected;
    }
  }
}function down() {
  s = document.all.s1;
  v = new Array();
  for(i=s.length-1;i>0;i--) {
    if(! s.options[i].selected && s.options[i-1].selected) {
      v.value = s.options[i].value;
      v.text = s.options[i].text;
      v.selected = s.options[i].selected;
      s.options[i].value = s.options[i-1].value;
      s.options[i].text = s.options[i-1].text;
      s.options[i].selected = s.options[i-1].selected;
      s.options[i-1].value = v.value;
      s.options[i-1].text = v.text;
      s.options[i-1].selected = v.selected;
    }
  }
}function show() {
  s = document.all.s1;
  v = "";
  for(i=0;i<s.length;i++)
    v += s.options[i].value + ":" + s.options[i].text + "\n";
  alert(v);
}
</script>

解决方案 »

  1.   

    很好使,有没有办法,将此listbox里的一条或多条数据,放到另外一个listbox里,并且可以再放回来?象垃圾箱一样!
      

  2.   

    <table>
    <tr>
    <td valign=top>
    <select name=s1 multiple size=4 style="width:100">
    <option value=1>aaaaaa
    <option value=2>bbbbbb
    <option value=3>cccccc
    <option value=4>dddddd
    <option value=5>eeeeee
    <option value=6>ffffff
    <option value=7>gggggg
    <option value=8>hhhhhh
    </select>
    </td>
    <td valign=middle align=center>
    <input type=button name=b4 value=">" onClick="move(1)"><br>
    <input type=button name=b5 value="<" onClick="move(2)">
    </td>
    <td valign=top>
    <select name=s2 multiple size=4 style="width:100">
    </select>
    </td>
    </tr>
    <tr>
    <td>
    <input type=button name=b1 value=向上 onClick="up()">
    <input type=button name=b2 value=向下 onClick="down()">
    </td>
    <td>
    <input type=button name=b3 value=查看 onClick="show()">
    </td>
    <td>
    </td>
    </tr>
    </table><script>
    function up() {
      s = document.all.s1;
      v = new Array();
      for(i=0;i<s.length-1;i++) {
        if(! s.options[i].selected && s.options[i+1].selected) {
          v.value = s.options[i].value;
          v.text = s.options[i].text;
          v.selected = s.options[i].selected;
          s.options[i].value = s.options[i+1].value;
          s.options[i].text = s.options[i+1].text;
          s.options[i].selected = s.options[i+1].selected;
          s.options[i+1].value = v.value;
          s.options[i+1].text = v.text;
          s.options[i+1].selected = v.selected;
        }
      }
    }function down() {
      s = document.all.s1;
      v = new Array();
      for(i=s.length-1;i>0;i--) {
        if(! s.options[i].selected && s.options[i-1].selected) {
          v.value = s.options[i].value;
          v.text = s.options[i].text;
          v.selected = s.options[i].selected;
          s.options[i].value = s.options[i-1].value;
          s.options[i].text = s.options[i-1].text;
          s.options[i].selected = s.options[i-1].selected;
          s.options[i-1].value = v.value;
          s.options[i-1].text = v.text;
          s.options[i-1].selected = v.selected;
        }
      }
    }function show() {
      s = document.all.s1;
      v = "";
      for(i=0;i<s.length;i++)
        v += s.options[i].value + ":" + s.options[i].text + "\n";
      alert(v);
    }function move(m) {
      if(m == 1) {
        ss1 = document.all.s1;
        ss2 = document.all.s2;
      }
      if(m == 2) {
        ss1 = document.all.s2;
        ss2 = document.all.s1;
      }
      v = new Array();
      k = 0;
      for(i=0;i<ss1.length;i++) {
        if(ss1.options[i].selected) {
          ss2.options[ss2.length] = new Option(ss1.options[i].text,ss1.options[i].value);
          v[k] = i;
          k++;
        }
      }
      for(i=v.length-1;i>=0;i--)
        ss1.options[v[i]] = null;
    }
    </script>
      

  3.   

    to xuzuning(唠叨) :
    我想将两个框里的所有值都传递到下一个页面
    请问能得到所有的值及起顺序号吗(不光是选中的值)?
      

  4.   

    s = document.all.s1;
      v = "";
      for(i=0;i<s.length;i++)
        v += s.options[i].value + "," + s.options[i].text + ",";
      
    这样就把s1的value和text连接起来了,s2雷同恢复时用s1.split(",")就可以产生数组
    两个元素为一组
      

  5.   

    非常感谢!请问这是使用javascript写吗?
    我的程序是jsp格式的,下一个页面如何获得上一个页面的所有值?
      

  6.   

    楼主:非常抱歉,我今天才来csdn看到你发的消息.现在公司不能上网了,我几乎没有来了,也很怀念这里,很遗憾
    xuzuning(唠叨)的解答用的是javascript,你提交到jsp页,可以定义一个数组来取得上个页面的select中所有值
      

  7.   

    to  seabell(百合心):
    谢谢你的答复,可是我还是不知道怎么用数组实现我的想法?能给个思路或示例吗?
      

  8.   

    我没用过jsp,不知道jsp中是否有与split等价的方法。我想应该有split是c的基本函数,我接触过的语言中都有这个函数,只是调用格式略有差异。
    split函数的功能是将一个字符串按指定的字符分列成数组
    其实,没有也好处理的。用循环检查指定的字符,分别取出相应的子串即可由于url只能传递串,所以数组必须连接成串
      

  9.   

    to xuzuning(唠叨) :
    我想你的意思是,先通过javascript将下拉框里的值生成一个字符串,以某中符号隔开,然后通过url将字符串传给下一个页面,下一个页面使用类似于split的函数将字符串生成数组,然后进行下面的处理,是吗?
      

  10.   

    是的。
    即使是提交,要做这样的处理。因为提交只传递有效数据。你不能期望对方能接受你的数据结构。应该以通用的约定传递数据。正因为这点,所以才出现了可自定义数据交换标准——xml
      

  11.   

    楼主:不好意思我今天才来,下面给个思路你来修改吧。jsp中是顺序取全部值的。因在网吧无运行环境,没有测试,见谅<script>
    function setarray()
    {
    a="";
    for(i=0;i<document.all.mysel.options.length;i++)
    a+="<input type=hidden name=myselect value="+document.all.mysel.options[i].value+">";
    document.all.mydiv.innerHTML=a;
    document.myform.submit();
    }
    </script>
    <form name=myform action=next.jsp>
    <select name=mysel>
    <option value=1>1
    <option value=2>2
    <option value=3>3
    <option value=4>4
    <option value=5>5
    </select>
    <input type=button onclick=setarray()>
    <div id=mydiv></div>
    </form>next.jsp
    <%String a[]=request.getParameterValues("myselect");
    for(int i=0;i<a.length;i++)
    {%>
    <%=a[i]%><br>
    <%}%>