1. 程式人生 > >個人js學習例項-點選按鈕實現全選與反選,及封裝函式呼叫前後

個人js學習例項-點選按鈕實現全選與反選,及封裝函式呼叫前後

原始:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>全選和反選</title>
    <!--引入bootstrap-->
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <script type="text/javascript" src="bootstrap/js/jquery.min.js"></script>
    <script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container-fluid text-center" style="margin-top: 50px">
    <button class="btn btn-success">全選</button>
    <button class="btn btn-default">取消</button>
    <button class="btn btn-danger">反選</button>
</div>
<div id="bottom" class="container-fluid text-center" style="margin-top: 10px;">
    <ul class="list-unstyled">
        <li>德瑪西亞:<input type="checkbox"></li>
        <li>德瑪西亞:<input type="checkbox"></li>
        <li>德瑪西亞:<input type="checkbox"></li>
        <li>德瑪西亞:<input type="checkbox"></li>
        <li>德瑪西亞:<input type="checkbox"></li>
        <li>德瑪西亞:<input type="checkbox"></li>
    </ul>
</div>

<script>
    window.onload = function () {
        //獲取三個button按鈕賦給陣列btns
        var btns = document.getElementsByTagName("button");
//        將id為bottom的div裡的input全部獲取賦給陣列inps
        var inps = document.getElementById("bottom").getElementsByTagName("input");
        //第一個按鈕全選
        btns[0].onclick = function () {
            //迴圈ins陣列
            for(var i = 0; i<inps.length; i++){
//                選中表單
                inps[i].checked = true;
            }
        }
        //第2個按鈕取消全選
        btns[1].onclick = function () {
            for(var i = 0; i<inps.length; i++){
//                選中表單
                inps[i].checked = false;
            }
        }
        //第3個按鈕反選
        btns[2].onclick = function () {
            for(var i = 0; i<inps.length; i++){
//                選中表單,利用for迴圈遍歷,如果是input的checked的值是false,賦給true值,如果是input的checked的值是true,賦給false值
                if(inps[i].checked == false){
                    inps[i].checked = true;
                }else {
                    inps[i].checked = false;
                }
            }
        }
    }
</script>
</body>
</html>

封裝函式後:

<script>
    window.onload = function () {
        //獲取三個button按鈕賦給陣列btns
        var btns = document.getElementsByTagName("button");
//        將id為bottom的div裡的input全部獲取賦給陣列inps
        var inps = document.getElementById("bottom").getElementsByTagName("input");
//        建立封裝函式all函式等待呼叫,引數flag指的是後面呼叫時的給的布林值
        function  all(flag) {
//            遍歷input的陣列inps
            for(var i = 0; i<inps.length; i++){
//                將引數flag的值賦給便利到的inps[i]
                inps[i].checked = flag;
            }
        }
        btns[0].onclick = function () {
            //呼叫函式all,將布林值true賦給形參flag
            all(true);
        };
        btns[1].onclick = function () {
            //呼叫函式all,將布林值false賦給形參flag
            all(false);
        };
        //第3個按鈕反選
        btns[2].onclick = function () {
            for(var i = 0; i<inps.length; i++){
//                利用三目運算,如果inps[i].checked的值是true,則執行第一個inps[i].checked = false,如果不是執行第二個inps[i].checked = true
                inps[i].checked == true?inps[i].checked = false:inps[i].checked = true;
            }
        }
    }
</script>