本文實例講解了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程序設計有所幫助。