运行结果:

源代码:

  1 <!DOCTYPE html>
2 <html lang="zh">
3 <head>
4 <meta charset="UTF-8">
5 <title>选项移动</title>
6 </head>
7 <body>
8 <table width="285" height="169" border="0" align="left" cellpadding="0" cellspacing="0"
9 style="margin: 15px 0px 0px 15px;">
10 <tr>
11 <td width="126">
12 <!--multiple="multiple" 能同时选择多个 size="10" 确定下拉选的长度-->
13 <select name="first" multiple="multiple" size=10 class="td3" id="s">
14 <option value="选项1">选项1</option>
15 <option value="选项2">选项2</option>
16 <option value="选项3">选项3</option>
17 <option value="选项4">选项4</option>
18 <option value="选项5">选项5</option>
19 <option value="选项6">选项6</option>
20 <option value="选项7">选项7</option>
21 <option value="选项8">选项8</option>
22 </select>
23 </td>
24 <td width="69" valign="middle">
25 <input name="add" id="add" type="button" class="button" value="-->"/>
26 <input name="add_all" id="add_all" type="button" class="button" value="==>"/>
27 <input name="remove" id="remove" type="button" class="button" value="&lt;--"/>
28 <input name="remove_all" id="remove_all" type="button" class="button" value="&lt;=="/>
29 </td>
30 <td width="127" align="left">
31 <select name="second" size="10" multiple="multiple" class="td3" id="second">
32 <option value="选项9">选项9</option>
33 </select>
34 </td>
35 </tr>
36 </table>
37 <script type="text/javascript">
38 // 左右两边的select
39 var leftSelect = document.getElementById("s");
40 var leftItems = leftSelect.children;
41 var rightSelect = document.getElementById("second");
42 var rightItems = rightSelect.children;
43 var selectedItems = [];
44
45 // 4个 按钮
46 // 01 -> left2right selected
47 document.getElementById("add").onclick = function () {
48 // todo
49 selectedItems.splice(0, selectedItems.length); // 删除自身的全部元素
50 for (var i = 0; i < leftItems.length; i++) {
51 var item = leftItems[i];
52 if (item.selected) {
53 selectedItems.push(item);
54 }
55 }
56 for (var j = 0; j < selectedItems.length; j++) {
57 rightSelect.appendChild(selectedItems[j]);
58 // leftSelect.removeChild(selectedItems[j]); todo ->为什么左边的不需要移除呢?
59 }
60 };
61 // 02 -> left2right all
62 document.getElementById("add_all").onclick = function () {
63 // todo
64 selectedItems.splice(0, selectedItems.length); // 删除自身的全部元素
65 // alert(selectedItems.concat(selectedItems,leftItems).length); // todo ->为什么添加之后长度只是1?
66 for (var i = 0; i < leftItems.length; i++) {
67 var item = leftItems[i];
68 selectedItems.push(item);
69 }
70 for (var j = 0; j < selectedItems.length; j++) {
71 rightSelect.appendChild(selectedItems[j]);
72 }
73 };
74 // 03 -> right2left selected
75 document.getElementById("remove").onclick = function () {
76 // todo
77
78 selectedItems.splice(0, selectedItems.length); // 删除自身的全部元素
79 for (var j = 0; j < rightItems.length; j++) {
80 var item = rightItems[j];
81 if (item.selected) {
82 selectedItems.push(item);
83 }
84 }
85
86 for (var i = 0; i < selectedItems.length; i++) {
87 leftSelect.appendChild(selectedItems[i]);
88 }
89 };
90 // 04 -> right2left all
91 document.getElementById("remove_all").onclick = function () {
92 // todo
93 selectedItems.splice(0, selectedItems.length); // 删除自身的全部元素
94 for (var j = 0; j < rightItems.length; j++) {
95 var item = rightItems[j];
96 selectedItems.push(item);
97 }
98 for (var i = 0; i < selectedItems.length; i++) {
99 leftSelect.appendChild(selectedItems[i]);
100 }
101 };
102
103 // 双击事件
104 leftSelect.ondblclick = function () {
105 // 左边select控件的双击事件
106 // alert(leftSelect.selectedIndex);
107 rightSelect.appendChild(leftItems[leftSelect.selectedIndex]);
108 };
109
110 rightSelect.ondblclick = function () {
111 leftSelect.appendChild(rightItems[rightSelect.selectedIndex]);
112 };
113 </script>
114 <!--<script type="text/javascript" src="js/selectTest.js"></script>-->
115 </body>
116 </html>

JavaScript操作select下拉框选项移动的更多相关文章

  1. jquery操作select下拉框的各种方法,获取选中项的值或文本,根据指定的值或文本选中select的option项等

    简介jquery里对select进行各种操作的方法,如联动.取值.根据值或文本来选中指定的select下拉框指定的option选项,读取select选中项的值和文本等. 这一章,站长总结一下jquer ...

  2. JQuery操作select下拉框

    JQuery操作select下拉框 获取Select选择的Text和Value $("#select_id").change(function(){//code...}); //为 ...

  3. selenium webdriver学习(八)------------如何操作select下拉框(转)

    selenium webdriver学习(八)------------如何操作select下拉框 博客分类: Selenium-webdriver   下面我们来看一下selenium webdriv ...

  4. JavaScript向select下拉框中加入和删除元素

    JavaScript向select下拉框中加入和删除元素 1.说明 a   利用append()方法向下拉框中加入元素 b   利用remove()方法移除下拉框中最后一个元素 2.设计源代码 < ...

  5. JavaScript向select下拉框中添加和删除元素

    JavaScript向select下拉框中添加和删除元素 1.说明 a   利用append()方法向下拉框中添加元素 b   利用remove()方法移除下拉框中最后一个元素 2.设计源码 < ...

  6. JavaScript解决select下拉框中的内容太长显示不全的问题

    JavaScript解决select下拉框中的内容太长显示不全的问题 1.说明 有些情况下,select下拉框的内容过长,导致部分看不见: 现在通过鼠标事件,让下拉框中的内容显示完全 2.实现源码 & ...

  7. JavaScript获取select下拉框中的第一个值

    JavaScript获取select下拉框中的第一个值 1.说明 获取select下拉框中的第一个值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD ...

  8. Selenium常用操作汇总二——如何操作select下拉框

    下面我们来看一下selenium webdriver是如何来处理select下拉框的,以http://passport.51.com/reg2.5p这个页面为例.这个页面中有4个下拉框,下面演示4种选 ...

  9. JavaScript获取Select下拉框Option的Value和Text值的方法

    Js获取select下拉列表框各个Option的Value值相对比较容易,不过获取Text值却有点麻烦,对于一个初学JavaScript的 新手来说,可能一时还无从下手,那么就请看下本文的方法,以一个 ...

随机推荐

  1. 二级py--day4 数据结构与算法篇

    二级py--day4 数据结构与算法篇 1.算法的基本特征:可行性.确定性.有穷性.拥有足够的情报 2.算法的设计要求包括效率与低存储量,既要考虑算法的时间复杂度和空间复杂度 3.算法的优劣:与算法描 ...

  2. linux作业--第九周

    1.简述DNS服务器原理,并搭建主--从服务器. 一.什么是DNS DNS(domain name system)域名系统或者(domain named system)区域名称服务,分为正向与反向域名 ...

  3. SQL从零到迅速精通【实用函数(2)】

    1.对查询结果进行排序 查询stu_info表中所有学生信息,并按照成绩由高到底进行排序,输入语句如下. SELECT * FROM stu_info ORDER BY s_score DESC;   ...

  4. laravel7 数据库数据导出至 xlsx

    网址参考: https://learnku.com/articles/32391 1:安装excel插件 安装方式 composer require maatwebsite/excel 2:excel ...

  5. laravel8安装步骤

    网址: https://learnku.com/docs/laravel/8.x/installation/9354 安装: # 安装laravel composer create-project - ...

  6. jsplumbWithVue实现流程编排

    最近业务需求,通过拖拽,实现流程编排,包括编排元素中的各种属性,刚开始拿到这个需求,一头雾水啊,找度娘渡了好久,FQ翻了很久,各种博客CSDN搜索,最终技术选型还是定在了jsplumb,这要感谢@萌级 ...

  7. LGP4590题解

    这题好像比较牛逼,好像又不是怎么样. 考虑两个串是如何计算 LCS 的. 这还不简单?\(dp[n][m]=\max(\max(dp[n-1][m],dp[n][m-1]),[s[n]==t[m]]d ...

  8. MyBatis报错—Type handler was null on parameter mapping for property 'createTime'. It was either not specified and/or could not be found for the javaType (javax.xml.crypto.Data) : jdbcType (null) combina

    原因是:在创建实体类的时候吧date类型写成data导致类型不匹配 Type handler was null on parameter mapping for property 'createTim ...

  9. GE PACSystems RX3i 输入验证漏洞

    受影响系统:General Electric CPE100 < R9.85General Electric CPE115 < R9.85General Electric CPE302 &l ...

  10. linux内存(二)高端内存

    来此网址 https://ilinuxkernel.com/?p=1013 Linux内核地址映射模型x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访 ...