• 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>

  • 相关阅读:
    NO29 用户提权sudo配置文件详解实践--志行为审计
    NO28 第四关考试题
    NO27 定时任务
    NO26 Linux的文件权限--chmod--Linux删除文件说明--suid--sgid
    NO25 三剑客之SED行天下
    NO24 第三关--企业面试题
    gcc编译错误表
    C++的精髓——虚函数
    gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer
    正确使用#include和前置声明(forward declaration)
  • 原文地址:https://www.cnblogs.com/wuqiuxue/p/7890089.html
Copyright © 2020-2023  润新知