JS实现购物车全选多选按钮功能

Posted qiaowanze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS实现购物车全选多选按钮功能相关的知识,希望对你有一定的参考价值。

对于JS初学者来说,一个完整的购物车实现还是挺难的,逻辑功能挺多。写出完整功能,能提升不少JS基础,下面实现购物车全选多选按钮功能:

首先html及CSS部分:

        <style>
            table 
                border-collapse: collapse;
            
            
            td 
                border: 1px solid #000000;
                width: 100px;
                height: 30px;
                text-align: center;
            
        </style>

    <body>
        <table>
            <tr>
                <td>
                    <label for="allCheck">全选</label><br><input id="allCheck" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check0" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check1" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check2" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check3" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check4" type="checkbox">
                </td>
            </tr>
        </table>

然后是JS部分:

<script>
            var allcheck = document.getElementById("allCheck")  //获取全选框
            allcheck.addEventListener("click",clickHandler)    //给全选框按钮添加点击属性
            for(var i=0;i<5;i++)
                var check = document.getElementById("check"+i)  //遍历每个多选按钮
                check.addEventListener("click",clickHandler);    //给每个多选框添加点击属性
            
            function clickHandler()
                if(allcheck === this)    //进行判断 如果你点击的是全选按钮 那么多选按钮也就全部被选中
                    for(var i=0;i<5;i++)
                        var check = document.getElementById("check"+i);    
                        check.checked = allcheck.checked;
                    
                    return;   //结束
                
                for(var j=0;j<5;j++)
                    var checks = document.getElementById("check"+j);
                    if(!checks.checked)    这一部分代码用来多选按钮是否被选中 遍历所有的多选按钮 如果有一个多选按钮没有被选中 那么全选按钮就不会被选中
                        allcheck.checked = false;
                        return;    //结束
                    
                
                allcheck.checked = true;    //不好理解 看不懂可以一步一步运行代码
            
        </script>

全部代码:

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            table 
                border-collapse: collapse;
            
            
            td 
                border: 1px solid #000000;
                width: 100px;
                height: 30px;
                text-align: center;
            
        </style>
    </head>
    <body>
        <table>
            <tr>
                <td>
                    <label for="allCheck">全选</label><br><input id="allCheck" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check0" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check1" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check2" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check3" type="checkbox">
                </td>
            </tr>
            <tr>
                <td>
                    <input id="check4" type="checkbox">
                </td>
            </tr>
        </table>
        <script>
            var allcheck = document.getElementById("allCheck")
            allcheck.addEventListener("click",clickHandler)
            for(var i=0;i<5;i++)
                var check = document.getElementById("check"+i)
                check.addEventListener("click",clickHandler);
            
            
            function clickHandler()
                if(allcheck === this)
                    for(var i=0;i<5;i++)
                        var check = document.getElementById("check"+i);
                        check.checked = allcheck.checked;
                    
                    return;
                
                for(var j=0;j<5;j++)
                    var checks = document.getElementById("check"+j);
                    if(!checks.checked)
                        allcheck.checked = false;
                        return;
                    
                
                allcheck.checked = true;
            
        </script>
    </body>
</html>

效果如下:

技术图片

以上是关于JS实现购物车全选多选按钮功能的主要内容,如果未能解决你的问题,请参考以下文章

vue中使用计算属性巧妙的实现多选框的“全选”

checkbox的全选反选多选等操作(js)

jQuery 实现全选多选反选

vue购物车出现了一个bug,一个单选按钮取消选中,为什么全部按钮包括全选按钮都取消选中了?

vue.js实现完整购物车实例

zepto全选按钮之全选会根据按钮是否被全部选中更改状态