function   moveOption(e1,   e2){   
       var right = true;
       var es = [];
      for(var i =0;i<e2.length;i++){
             es[i]=e2.optionsp[i].value;
                                    }
for(var i = 0;i<e1.length;i++){
 if(e1.options[i].selected){
 for(var k =0;k<es.length;k++){
if(es[k]==e1.options[i].value)
{
right=false;
break;
 }
 }
if(right)
{
  
e2.options.add(new   Option(e1.options[i].text,   e1.options[i].value));
                   }   
}

}
自己改了下,我先把列表2的值循环给数组es,然后当列表1的值被选后和数组es的值循环比较,可这次结果是只能移动一次值,无论第二次移动列表1中哪个,都无法在列表2中显示。。愁死我了我再继续自己想,也等待哪位朋友可以帮忙,虽然小问题,但也把我难住了,哎。