• JS——选择水果


    注意点:

    1、select标签size属性显示选项数组,multiple属性可以多选

    2、原select节点下的子节点在移动到其他selec标签下的时候,其原来的select标签下子节点长度在发生变化

    3、注册事件可以直接绑定一个函数名,但是如果绑定的函数有参数,那么必须将这个有参数的函数写入到匿名函数中

    4、Array.from可将一个类似数组或可迭代对象中创建一个新的数组实例

    选择水果简单版本:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            select {
                width: 100px;
                height: 200px;
                background-color: #D3FF82;
            }
        </style>
    </head>
    <body>
    <select size="10">
        <option>香蕉</option>
        <option>苹果</option>
        <option>葡萄</option>
        <option>西瓜</option>
        <option>芒果</option>
    </select>
    <button><<<<</button>
    <button><</button>
    <button>>>>></button>
    <button>></button>
    <select size="10"></select>
    <script>
        var btnArr = document.getElementsByTagName("button");
        var selArr = document.getElementsByTagName("select");
        //selArr数组的长度一直在变化
        btnArr[0].onclick = function () {
            for (var i = 0; i < selArr[0].children.length;) {
                selArr[1].appendChild(selArr[0].children[i]);
            }
        }
        btnArr[2].onclick = function () {
            for (var i = 0; i < selArr[1].children.length;) {
                selArr[0].appendChild(selArr[1].children[i]);
            }
        }
        btnArr[1].onclick = function () {
            for (var i = selArr[0].children.length-1; i >= 0; i--) {
                if (selArr[0].children[i].selected == true) {
                    selArr[1].appendChild(selArr[0].children[i]);
                }
            }
        }
        btnArr[3].onclick = function () {
            for (var i = selArr[1].children.length-1; i >= 0; i--) {
                if (selArr[1].children[i].selected == true) {
                    selArr[0].appendChild(selArr[1].children[i]);
                }
            }
        }
    </script>
    </body>
    </html>

    选择水果最终版本:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            select {
                width: 100px;
                height: 200px;
                background-color: #D3FF82;
            }
        </style>
    </head>
    <body>
    <select size="10" multiple="multiple">
        <option value="0">香蕉</option>
        <option value="1">苹果</option>
        <option value="2">葡萄</option>
        <option value="3">西瓜</option>
        <option value="4">芒果</option>
    </select>
    <button><<<<</button>
    <button><</button>
    <button>>>>></button>
    <button>></button>
    <select size="10" multiple="multiple"></select>
    <script>
        var btnArr = document.getElementsByTagName("button");
        var selArr = document.getElementsByTagName("select");
        //selArr数组的长度一直在变化
        //注册事件调用函数,在无参数的情况下可以直接绑定一个函数名,有参数的话,只能在匿名函数中调用
        btnArr[0].onclick = function () {
            allMove(selArr[0], selArr[1]);
        }
        btnArr[2].onclick = function () {
            allMove(selArr[1], selArr[0]);
        }
    
        function allMove(se1, se2) {
            for (var i = 0; i < se1.children.length;) {
                se1.children[i].selected = false;
                se2.appendChild(se1.children[i]);
            }
        }
    
        btnArr[1].onclick = function () {
            sigleSwitch(selArr[0], selArr[1]);
        }
        btnArr[3].onclick = function () {
            sigleSwitch(selArr[1], selArr[0]);
        }
    
        function sigleSwitch(se1, se2) {
            for (var i = se1.children.length - 1; i >= 0; i--) {
                if (se1.children[i].selected == true) {
                    se1.children[i].selected = false;
                    se2.appendChild(se1.children[i]);
                }
            }
            //对se2排序,并将排序过后的值存储到arr数组中
            var arr = Array.from(se2.children).sort(function (a, b) {
                return a.value - b.value;
            });
            //删除se2中的子节点
            for (var i = 0; i < se2.children.length;) {
                se2.removeChild(se2.children[i]);
            }
            //将arr数组中的子节点添加到se2中
            for (var i = 0; i < arr.length; i++) {
                se2.appendChild(arr[i]);
            }
        }
    </script>
    </body>
    </html>

  • 相关阅读:
    jmeter的插件安装
    linux下性能监控工具nmon的使用
    kafka如何保证不重复消费又不丢失数据_Kafka写入的数据如何保证不丢失?
    Goroutine和Panic
    go 并发有趣现象和要避开的坑
    Go语言宕机恢复(recover)——防止程序崩溃
    invalid character 'è' looking for beginning of value
    golang实现RPC的几种方式
    channl与select
    我要在栈上。不,你应该在堆上
  • 原文地址:https://www.cnblogs.com/wuqiuxue/p/7890089.html
Copyright © 2020-2023  润新知