基于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 相关文章推荐
JavaScript Event学习第五章 高级事件注册模型
Feb 07 Javascript
jQuery1.6 类型判断实现代码
Sep 01 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
Sep 24 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
Node连接mysql数据库方法介绍
Feb 07 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
Aug 17 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
Jan 08 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 Javascript
使用JS前端技术实现静态图片局部流动效果
Aug 05 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基础教程 php内置函数实例教程
2012/08/21 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
PHP魔术方法使用方法汇总
2016/02/14 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
js replace正则表达式应用案例讲解
2013/01/17 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
Bootstrap源码解读表单(2)
2016/12/22 Javascript
遍历json获得数据的几种方法小结
2017/01/21 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
element-ui表格数据转换的示例代码
2018/08/24 Javascript
vue组件化中slot的基本使用方法
2019/05/01 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python实现单词翻译功能
2017/06/06 Python
Python 文件操作的详解及实例
2017/09/18 Python
python 两种方法删除空文件夹
2020/09/29 Python
python中的测试框架
2020/11/13 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
写给老师的表扬信
2014/01/21 职场文书
企业宗旨标语
2014/06/10 职场文书
优秀党员推荐材料
2014/12/18 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS