[JavaScript]操作下拉列表

操作下拉列表

<!DOCTYPE html>
<html>
<head>
    <title>下拉列表</title>
    <meta charset="utf-8"/>
    <script type="text/javascript">
        /*
            列表移动思想:
                1: <select>下拉标签有个selectedIndex属性 , 
                        当下拉标签调用该属性时,
                        会返回当前列表中--->第一个被选中的<option>的下标,
                        利用此思想,获取下拉列表数组,利用返回的下标
                        用第二个下拉标签appendChild(),即可实现移动
                2: 双击事件 : ondblclick
                3: JS中的数组长度是非定长的,所以在for循环中,
                   绝对不能使用数组的长度做条件,应获取数组长度,使用定量做条件

                   例如:
                        //选中的从左边移到右边
                        document.getElementById("rightPart").onclick = function () {
                            var one = document.getElementById("one");
                            var oneItems = one.getElementsByTagName("option");
                            //这里获取数组长度,做循环条件!!!!!!!!
                            var length = oneItems.length;
                            var two = document.getElementById("two");
                            //条件为 i < length , 不能为 oneItems.length (它是变化的) !!!
                            for (var i = 0; i < length; i++) {
                                if (one.selectedIndex!=-1) {
                                    //每次移动前返回被选中的第一个的下标!!!one.selectedIndex
                                    two.appendChild(oneItems[one.selectedIndex]);
                                }
                            }
                        } 


        */
        window.onload = function () {
        /************************************************************************************/
            //选中的从左边移到右边
            document.getElementById("rightPart").onclick = function () {
                //获取第一个下拉列表
                var one = document.getElementById("one");
                //获取第一个下拉列表所有项
                var oneItems = one.getElementsByTagName("option");
                var length = oneItems.length;
                //获取第二个下拉列表
                var two = document.getElementById("two");
                //遍历第一个下拉列表
                for (var i = 0; i < length; i++) {
                    if (one.selectedIndex!=-1) {
                        two.appendChild(oneItems[one.selectedIndex]);
                    }
                }
            }


        /************************************************************************************/
            //选中的从左边全部右移
            document.getElementById("rightAll").onclick = function () {
                //获取第一个下拉列表
                var one = document.getElementById("one");
                //获取第一个下拉列表所有项
                var oneItems = one.getElementsByTagName("option");
                var length = oneItems.length;
                //获取第二个下拉列表
                var two = document.getElementById("two");
                //遍历
                for (var i = 0; i < length; i++) {
                    two.appendChild(oneItems[0]);
                }
            }

        /************************************************************************************/
            //双击时把左侧下拉列表右移
            document.getElementById("one").ondblclick = function () {
                //获取第一个下拉列表
                var one = document.getElementById("one");
                //获取第一个下拉列表所有项
                var oneItems = one.getElementsByTagName("option");
                //获取第二个下拉列表
                var two = document.getElementById("two");
                //在第二个下拉列表添加选中的下拉项
                two.appendChild(oneItems[one.selectedIndex]);
            }


        /************************************************************************************/
            //选中的从右边移到左边
            document.getElementById("leftPart").onclick = function () {
                //获取第一个下拉列表
                var one = document.getElementById("one");
                //获取第二个下拉列表
                var two = document.getElementById("two");
                //获取第二个下拉列表的下拉项
                var twoItems = two.getElementsByTagName("option");
                //获取第二个下拉列表的长度
                var length = twoItems.length;
                //遍历
                for (var i = 0; i < length ; i++) {

                    if (two.selectedIndex!=-1) {
                        one.appendChild(twoItems[two.selectedIndex]);
                    }
                }


            }

        /************************************************************************************/
            //选中的从右边全部移到左边
            document.getElementById("leftAll").onclick = function () {
                //获取第一个下拉列表
                var one = document.getElementById("one");
                //获取第二个下拉列表
                var two = document.getElementById("two");
                //获取第二个下拉列表的下拉项
                var twoItems = two.getElementsByTagName("option");
                //获取第二个下拉列表的长度
                var length = twoItems.length;
                //遍历
                for (var i = 0; i < length; i++) {
                    one.appendChild(twoItems[0]);
                }
            }

        /************************************************************************************/
            //双击时把右侧下拉列表左移
            document.getElementById("two").ondblclick = function () {
                //获取第一个下拉列表
                var one = document.getElementById("one");
                //获取第二个下拉列表
                var two = document.getElementById("two");
                //获取第二个下拉列表的下拉项
                var twoItems = two.getElementsByTagName("option");
                //在第一个下拉列表添加选中的下拉项
                one.appendChild(twoItems[two.selectedIndex]);
            }
        }
    </script>
</head>
<body>
<!-- multiple="multiple" : 允许多选 , size : 下拉列表长度 -->
<select name="one" multiple="multiple" size="8" id="one" style="width: 70px;">
    <option value="语文">语文</option>
    <option value="数学">数学</option>
    <option value="英语">英语</option>
    <option value="物理">物理</option>
    <option value="化学">化学</option>
    <option value="生物">生物</option>
</select>

<input type="button" value="把选中的右移" id="rightPart"></input>
<input type="button" value="全部右移" id="rightAll"></input>
<input type="button" value="把选中的左移" id="leftPart"></input>
<input type="button" value="全部左移" id="leftAll"></input>

<select name="two" multiple="multiple" size="8" id="two" style="width: 70px;"></select>

</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值