读书人

JS实现数据交换(解决交换多值时残留值

发布时间: 2012-10-11 10:16:10 作者: rapoo

JS实现数据交换(解决交换多值时残留值的问题)

???? ?在用js写两个下拉列表交换值的时候,让我们着实郁闷的就是,当我们在选中多个值进行交换时,会有部分值残留在另一侧的下拉列表里,当我们一个一个交换时就没有事情。为什么会出现这样的问题呢 是因为当我们在remove掉一个字节点的时候,其中的每个节点的index都发生了变化就是说每一个都变成了原先的index-1(除非你交换的不是第一个第一个还是原先的0),那要实现全部交换的效果我们应该怎么办呢?

图解代码如下:

?

JS实现数据交换(解决交换多值时残留值的有关问题)JS实现数据交换(解决交换多值时残留值的有关问题)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>jiaohuan.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--><style>    #div1{  border-style:ridge ridge;  width: 60px;  height: auto;  }   #div3{  border-style:ridge ridge;  width: 70px;  height: auto;  }    </style></head><body><div id="div4" align="center"><div id="div1" style="float: left"><select size="10" id="sel" multiple="multiple"><option>选项1</option><option>选项2</option><option>选项3</option><option>选项4</option><option>选项5</option><option>选项6</option><option>选项7</option></select></div><div id="div2" style="float:left"><input type="button" value="-->" onclick="xi()" /><input type="button" value="《==" onclick="hui()" /></div><div id="div3"><select size="10" id="sel2" style="width: 70px" multiple="multiple"></select></div></div></body></html><script type="text/javascript">//这里我把单个移动和多值交换写在一个方法里了,可以拆开写function xi(){   var sel=document.getElementById("sel");   for(var i=0;i<sel.options.length;i++){      if(sel.options[i].selected){      var chang=sel.options[i].innerHTML;       var sel2=document.getElementById("sel2");       var op=document.createElement("option");       op.appendChild(document.createTextNode(chang));       sel2.appendChild(op);       sel.removeChild(sel.options[i]);       i=i-1;//因为当我们在进行remove是index变换了,所以让他从0在开始遍历       }          }    }function hui(){   var sel=document.getElementById("sel2");   for(var i=0;i<sel.options.length;i++){      if(sel.options[i].selected){      var chang=sel.options[i].innerHTML;       var sel1=document.getElementById("sel");       var op=document.createElement("option");       sel.removeChild(sel.options[i]);       op.appendChild(document.createTextNode(chang));       sel1.appendChild(op);       i=i-1;//因为当我们在进行remove是index变换了,所以让他从0在开始遍历       }    }    }</script>

?简化算法 直接交换对象

function xi1(){   var sel=document.getElementById("sel");   for(var i=0;i<sel.options.length;i++){      if(sel.options[i].selected){      sel2.appendChild(sel.options[i]);       i--;             }   } } function hui1(){  var sel1=document.getElementById("sel");   var sel=document.getElementById("sel2");   for(var i=0;i<sel.options.length;i++){      if(sel.options[i].selected){       sel1.appendChild(sel.options[i]);       i=i-1;       }   }}

?

读书人网 >JavaScript

热点推荐