<script language="javascript">
<!--
  function fncadd(v,t)
  {
    var o1 = document.all.s1;
    var o2 = document.all.s2;
    var f;
    for(var i=0;i<o2.length;i++)
    {
      if(o2[i].text == t)
      {
        f='1';
        alert('有重复内容,不添加!');
      }
    }
    if(f != '1') s2.options.add(new Option(t,v));
  }
//-->
</script><select name=s1 onchange="fncadd(this.value,this.options[this.selectedIndex].text);">
<option>a1
<option>a2
<option>a3
</select>
<select name=s2>
<option>b1
<option>a2
<option>b3
</select>

解决方案 »

  1.   

    以上你的判断有个bug哦。。
    我的列表框是可以进行多选的。。
      

  2.   

    function AddValue(form){
        for(var i=0;i<form.UserName.length;i++){
           if (form.UserName[i].selected){

    }
       }
    }
      

  3.   

    没写完就发了,汗!!
    function AddValue(form){
        for(var i=0;i<form.UserName.length;i++){
           if (form.UserName[i].selected){
     for(var j=0;j<form.UserNameSel.length;j++){
                 if(form.UserNameSel[i].value!=form.UserName[i].value){
                   form.UserNameSel.options[form.UserNameSel.length] = new Option(form.UserName.options[i].text,form.UserName.options[i].value)
                 }
              }
           }
       }
    }
    也就是在你的if里面循环判断,就是有点浪费
    数据多可能速度慢
      

  4.   

    to: zhuqm(东子) 
    我原来也是这样写,但写完后,选择后添加不到第二个列表框中,不知为什么?
      

  5.   

    function LeftToRight(Left,Right){   //左边加到右边
    for(var i=Left.length-1;i>=0;i--){
    if(Left.options[i].selected){
    var j = Right.options.length - 1;
    for (; j >= 0; j--) {
      if (Left.options(i).value == Right.item(j).value) {
      break;
       }
     }
     if (j<0) {
    var op = document.createElement("OPTION");
    op.text=Left.options[i].text;
    op.value=Left.options[i].value;
       
    Right.add(op);
    //Left.options[i] = null;
    }
    }
    }
    }