基于javascript实现listbox左右移动
作者:bea
本文实例讲解了javascript实现listbox左右移动的详细代码,分享给大家供大家参考,具体内容如下 效果图: 具体代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>listbox左右移动</title> </head> <body> &
本文实例讲解了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程序设计有所帮助。
猜你喜欢
您可能感兴趣的文章:
- JS排序方法(sort,bubble,select,insert)代码汇总
- JavaScript中的this机制
- 实现高性能JavaScript之执行与加载
- 深入探秘jquery瀑布流的实现
- 深入分析Javascript事件代理
- 详解javascript实现瀑布流列式布局
- 详解javascript实现瀑布流绝对式布局
- 理解Javascript文件动态加载
- JavaScript操作select元素和option的实例代码
- JavaScript学习总结之JS、AJAX应用
- Angularjs中UI Router全攻略
- JavaScript数据结构与算法之集合(Set)
- AngularJS 使用 UI Router 实现表单向导
- JavaScript数据结构与算法之链表
- 动态创建按钮的JavaScript代码
- JavaScript数据结构与算法之栈与队列
- javascript实现表单验证
- jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
- JavaScript判断DIV内容是否为空的方法