基于javascript实现listbox左右移动


Posted in Javascript onJanuary 29, 2016

本文实例讲解了javascript实现listbox左右移动的详细代码,分享给大家供大家参考,具体内容如下

效果图:

基于javascript实现listbox左右移动

具体代码:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>listbox左右移动</title> 
</head> 
 
<body> 
 
<div style="background-color:#CCC; width:450px; height:300px; margin:150px,0,0,450px; border:1px solid"> 
  <table align="center" width="285" height="169" bgcolor="#99CCFF"> 
  <tr> 
   <td width="100"> 
    <select name="first" id="first" size="10" multiple="multiple" style="background-color:#3FC;"> 
     <option value="选项1">选项1</option> 
     <option value="选项2">选项2</option> 
     <option value="选项3">选项3</option> 
     <option value="选项4">选项4</option> 
     <option value="选项5">选项5</option> 
     <option value="选项6">选项6</option> 
     <option value="选项7">选项7</option> 
     <option value="选项8">选项8</option> 
    </select> 
   </td> 
   <td width="85" valign="middle"> 
    <input name="add" id="add" type="button" value="--->"/> 
    <input name="add_all" id="add_all" type="button" value="===>"/> 
    <input name="remove" id="remove" type="button" value="<---"/> 
    <input name="remove_all" id="remove_all" type="button" value="<==="/> 
   </td> 
   <td width="100" align="left"> 
    <select name="second" id="second" size="10" multiple="multiple" style="background-color:#3FC;"> 
    <option value="选项9">选项9</option> 
    </select> 
   </td> 
  </tr> 
  </table> 
</div> 
 
</body> 
<script type="text/javascript"> 
 //左移右 
  
  /*<input name="add" id="add" type="button" value="--->"/>*/ 
  document.getElementById("add").onclick = function add() 
  { 
   var firstSel = document.getElementById("first"); 
   var option = firstSel.getElementsByTagName("option"); 
   //javascript的数组是动态数组,长度是可以变的。 
   //所以先取得下拉列表的长度,避免option被移走后长度变小,导致后面循环终止,出现beg 
   var oplength=option.length; 
   var secondSel = document.getElementById("second"); 
   for(i=0;i<oplength;i++) 
   { 
     /* 
      selectedIndex: 该下标返回下拉列表的索引值 
      注: 如果有多个被选中的情况下,永远返回第一个选中的索引值,索引最小的那个 
         如果没有被选中的情况下,返回-1 
         selectedIndex是<select>的属性 
     */ 
     if(firstSel.selectedIndex!=-1) 
     { 
       secondSel.appendChild(option[firstSel.selectedIndex]); 
     } 
   } 
    
  } 
   
  /*<input name="add_all" id="add_all" type="button" value="===>"/>*/ 
  document.getElementById("add_all").onclick = function addAll() 
  { 
   var firstSel = document.getElementById("first"); 
   var option = firstSel.getElementsByTagName("option"); 
   //javascript的数组是动态数组,长度是可以变的。 
   //所以先取得下拉列表的长度,避免option被移走后长度变小,导致后面循环终止,出现beg 
   var oplength=option.length; 
   var secondSel = document.getElementById("second"); 
   for(i=0;i<oplength;i++) 
   { 
    /*因为javascript的数组是动态数组,长度是可以变的。所以当移走全部把数 
    组的值移走(一个一个的移走,数组长度马上-1,所以数组下标也是-1.因次我们要把每次移的是走下标为0的那个 
    数,这样才保证可以全部移走)*/ 
    secondSel.appendChild(option[0]); 
   } 
  } 
   
  /*双击后把option移到右边*/ 
  document.getElementById("first").ondblclick = function dblclick() 
  { 
    /*方法一*/ 
    /* 
   var firstSel = document.getElementById("first"); 
   var option = firstSel.getElementsByTagName("option"); 
   //javascript的数组是动态数组,长度是可以变的。 
   //所以先取得下拉列表的长度,避免option被移走后长度变小,导致后面循环终止,出现beg 
   var oplength=option.length; 
   var secondSel = document.getElementById("second"); 
   for(i=0;i<oplength;i++) 
   { 
      //双击可以看成:第一次点击选中,第二次点击移动 
      secondSel.appendChild(option[firstSel.selectedIndex]);   
   } 
   */ 
    
   /*方法二*/ 
   /* 
   this: this表示document.getElementById("first")  下拉列表 
      this.selectedIndex表示下拉列表选中的项 
   */ 
    var secondSel = document.getElementById("second"); 
    secondSel.appendChild(this[this.selectedIndex]); 
  } 
   
   
   
   
  //右移左 
   
   
  /*<input name="remove" id="remove" type="button" value="<---"/>*/ 
  document.getElementById("remove").onclick = function remove() 
  { 
   var secondSel = document.getElementById("second"); 
   var firstSel = document.getElementById("first"); 
   var option = secondSel.getElementsByTagName("option"); 
   //javascript的数组是动态数组,长度是可以变的。 
   //所以先取得下拉列表的长度,避免option被移走后长度变小,导致后面循环终止,出现beg 
   var oplength=option.length; 
   for(i=0;i<oplength;i++) 
   { 
     /* 
      selectedIndex: 该下标返回下拉列表的索引值 
      注: 如果有多个被选中的情况下,永远返回第一个选中的索引值,索引最小的那个 
         如果没有被选中的情况下,返回-1 
         selectedIndex是<select>的属性 
     */ 
     if(secondSel.selectedIndex!=-1) 
     { 
       firstSel.appendChild(option[secondSel.selectedIndex]); 
     } 
   } 
    
  } 
   
  /*<input name="remove_all" id="remove_all" type="button" value="<==="/>*/ 
  document.getElementById("remove_all").onclick = function remove_all() 
  { 
   var secondSel = document.getElementById("second"); 
   var firstSel = document.getElementById("first"); 
   var option = secondSel.getElementsByTagName("option"); 
   //javascript的数组是动态数组,长度是可以变的。 
   //所以先取得下拉列表的长度,避免option被移走后长度变小,导致后面循环终止,出现beg 
   var oplength=option.length; 
   for(i=0;i<oplength;i++) 
   { 
    /*因为javascript的数组是动态数组,长度是可以变的。所以当移走全部把数 
    组的值移走(一个一个的移走,数组长度马上-1,所以数组下标也是-1.因次我们要把每次移的是走下标为0的那个 
    数,这样才保证可以全部移走)*/ 
    firstSel.appendChild(option[0]); 
   } 
  } 
   
  /*双击后把option移到右边*/ 
  document.getElementById("second").ondblclick = function dblclick() 
  { 
    /*方法一*/ 
    /* 
   var secondSel = document.getElementById("second"); 
   var firstSel = document.getElementById("first"); 
   var option = secondSel.getElementsByTagName("option"); 
   //javascript的数组是动态数组,长度是可以变的。 
   //所以先取得下拉列表的长度,避免option被移走后长度变小,导致后面循环终止,出现beg 
   var oplength=option.length; 
   for(i=0;i<oplength;i++) 
   { 
      //双击可以看成:第一次点击选中,第二次点击移动 
      firstSel.appendChild(option[secondSel.selectedIndex]);   
   } 
   */ 
    
   /*方法二*/ 
   /* 
   this: this表示document.getElementById("second")  下拉列表 
      this.selectedIndex表示下拉列表选中的项 
   */ 
    var firstSel = document.getElementById("first"); 
    firstSel.appendChild(this[this.selectedIndex]); 
  } 
</script> 
</html>

代码注释很详细,希望可以帮到大家。

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
Mootools 1.2教程 输入过滤第二部分(字符串)
Sep 15 Javascript
JS 获取select(多选下拉)中所选值的示例代码
Aug 02 Javascript
JQuery获取表格数据示例代码
May 26 Javascript
2014年50个程序员最适用的免费JQuery插件
Dec 15 Javascript
VS2008中使用JavaScript调用WebServices
Dec 18 Javascript
javascript中一些util方法汇总
Jun 10 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
jquery实现点击变换导航样式的方法
Aug 31 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 Javascript
解决ant Design中Select设置initialValue时的大坑
Oct 29 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 #Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 #Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
Jan 20 #Javascript
JavaScript中的this,call,apply使用及区别详解
Jan 29 #Javascript
javascript实现tab响应式切换特效
Jan 29 #Javascript
JavaScript SweetAlert插件实现超酷消息警告框
Jan 28 #Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 #Javascript
You might like
PHP面向对象程序设计之接口用法
2014/08/20 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
PHP7 弃用功能
2021/03/09 PHP
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
javascript获取四位数字或者字母的随机数
2015/01/09 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
Python易忽视知识点小结
2015/05/25 Python
简单上手Python中装饰器的使用
2015/07/12 Python
利用pyinstaller或virtualenv将python程序打包详解
2017/03/22 Python
python删除某个字符
2018/03/19 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
学python爬虫能做什么
2020/07/29 Python
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
餐饮收银员岗位职责
2014/02/07 职场文书
大学生党员自我批评
2014/02/14 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
营销与策划专业求职信
2014/06/20 职场文书
办理房产过户的委托书
2014/09/14 职场文书
学前班学生评语
2014/12/29 职场文书
课改心得体会范文
2016/01/25 职场文书
《给予树》教学反思
2016/03/03 职场文书
logback 实现给变量指定默认值
2021/08/30 Java/Android
mysql insert 存在即不插入语法说明
2022/03/25 MySQL
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python