基于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 iframe的相互操作浅析
Oct 14 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
javascript之AJAX框架使用说明
Apr 24 Javascript
JS截取字符串常用方法整理及使用示例
Oct 18 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
JS模式之单例模式基本用法
Jun 30 Javascript
深入理解jQuery之防止冒泡事件
May 24 Javascript
javascript中使用未定义变量或值的情况分析
Jul 19 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
Dec 22 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
Sep 27 Javascript
JavaScript实现淘宝商品图切换效果
Apr 29 Javascript
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
关于获取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自动生成月历代码
2006/10/09 PHP
深入分析php之面向对象
2013/05/15 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
canvas学习之API整理笔记(一)
2016/12/29 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python读取VOC中的xml目标框实例
2020/03/10 Python
Python调用C/C++的方法解析
2020/08/05 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
C++面试题目
2013/06/25 面试题
管理专员自荐信
2014/01/26 职场文书
校本培训个人总结
2015/02/28 职场文书
2014年个人年终总结
2015/03/09 职场文书
2015年幼儿园安全工作总结
2015/05/12 职场文书
防卫过当辩护词
2015/05/21 职场文书
小学运动会前导词
2015/07/20 职场文书
golang中的空接口使用详解
2021/03/30 Python