美文网首页
jquery之手写购物车

jquery之手写购物车

作者: 弦生_a3a3 | 来源:发表于2020-10-28 09:33 被阅读0次

    常利用到的方法:

    find(),filter(),forEach(),every()


    <!DOCTYPE html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <title>购物车</title>

    </head>

    <style>

        *{

            margin: 0;

            padding: 0;

            list-style: none;

        }

    header{

        width: auto;

        height: 26px;

        position: relative!important;

        background: #f2f2f2;

        z-index: 99999;

        -webkit-transform: translate3d(0,0,0);

        border-bottom: 1px solid #e5e5e5;

    }

    .sn-container {

        height: inherit;

        width: 990px;

        margin: 0 auto;

    }

    .content{

        width: 990px;

        height: 700px;

        overflow-y: scroll;

        margin: 10px auto;

    }

    .container{

        width: 100%;

    }

    input::-webkit-outer-spin-button,

    input::-webkit-inner-spin-button {

      -webkit-appearance: none;

    }

    input[type="number"]{

      -moz-appearance: textfield;

    }

    tbody td{

        text-align: center;

    }

    input[type="checkbox"]{

        cursor: pointer;

    }

    .btn input[type="number"]{

        text-align: center;

        width: 30px;

    }

    .imgs img{

        height: 120px;

        height: 100px;

    }

    .footer{

        width: 990px;

        margin: 20px auto;

        border: 1px solid #ccc;

    }

    .footer p{

        padding: 10px;

    }

    .footer p span{

        color: red;

        font-weight: bold;

    }

    .shpping{

        float: right;

        outline: none;

        cursor: pointer;

        padding: 7px 22px;

        background-color: orangered;

        border: none;

        color: #fff;

    }

    .btn button{

        padding: 0px 10px;

        cursor: pointer;

    }

    .del:active{

        background-color:#FF0036 ;

    }

    .pro{

        display: flex;

        justify-content: space-between;

    }

    .del{

        padding: 6px 15px;

        outline: none;

        cursor: pointer;

        color: #fff;

        background-color: rgb(240, 76, 76);

        border: none;

        border-radius: 5px;

    }

    .active{

        background-color: sandybrown !important;

    }

    </style>

    <body>

        <header>

            <div class="sn-container">

            </div>

        </header>

        <div class="content">

            <table class="container" border="1" style="border-color: #eee;"  cellspacing="0">

                <thead>

                    <th><input type='checkbox' class="checkAll"></th>

                    <th>id</th>

                    <th>商品图片</th>

                    <th>商品名称</th>

                    <th>价格</th>

                    <th>数量</th>

                    <th>操作</th>

                </thead>

                <tbody>

                </tbody>

            </table>

        </div>

        <div class="footer">

            <div class="pro">

                <p>商品总价格:<span>¥</span><span class="totprice">111</span></p>

                <p>已选商品数量<span class="produc_count" style="padding: 0 10px;">1</span>件</p>

            <button class="shpping">立即购买</button>

            </div>

        </div>

     <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>

     <script>

        let goodslist=[

          {

            id:1,

            img:'./img/mzp.jpg',

            name:'憨憨猫抓板',

            price:41.9,

            money:41.9,

            count:1,

            checked:false

          },

          {

            id:2,

            img:'./img/zxw.jpg',

            name:'猫咪造型窝',

            price:260,

            money:130,

            count:2,

            checked:true

          },

          {

            id:3,

            img:'./img/mdg.jpg',

            name:'猫冻干零食',

            price:75,

            money:75,

            count:1,

            checked:false

          }, {

            id:4,

            img:'./img/hhdg.jpg',

            name:'憨憨冻干大礼包',

            price:69,

            money:69,

            count:1,

            checked:true

          },

          {

            id:5,

            img:'./img/bb.jpg',

            name:'憨憨外出背包',

            price:55,

            money:55,

            count:1,

            checked:false

          }

        ]

    //页面商品赋值,每次方法运行即可刷新每一项

        function newlist(){

            let list

        goodslist.forEach((item,index)=>{

        item.checked=item.checked?'checked':''

        list+=`

        <tr class="tr${item.id}">

                <td><input class="check" onclick="checkwhy(${item.id})" type='checkbox' ${item.checked}></td>

                <td>${item.id}</td>

                <td class="imgs">

                     <img src="${item.img}" alt="">

                </td>    

                <td>${item.name}</td>

                <td>¥${item.price}</td>

                <td class="btn">

                    <button onclick=subtraction(${item.id})>-</button><input type="number" value="${item.count}"><button onclick="add(${item.id})">+</button>

                </td>

                <td>

                    <button class="del" onclick="del(${item.id})">删除</button>

                </td>

               </tr>

        `

        $('tbody').html(list)

      })

    let allcheck=document.querySelectorAll('.check')

     allcheck.forEach((item,index)=>{

         item.setAttribute('id',goodslist[index].id)

        //  判断选中check的添加类

        let addcheck=goodslist.filter(item=>{ return item.checked!=false})

        //计算被选购商品数量

        let produc_count=document.querySelector('.produc_count')

        produc_count.innerHTML=addcheck.length

        addcheck.forEach(item=>{ $(`.tr${item.id}`).addClass('active')})

     })

        }

        newlist()

      //总额计算

      function conuntMoney(){

        let totalmoney=0;

            let good= goodslist.filter(item=>{

                return item.checked

            })

            console.log(good)

            good.forEach(res=>{

                totalmoney+=(res.money*res.count)

            })

        $('.totprice').text(totalmoney)

      }

      conuntMoney()

      let isAll=false

    //   全选

      $('.checkAll').click(function(){

          let mes=this

         goodslist.forEach((checkAlls,index)=>{

             checkAlls.checked=mes.checked

                let checked=document.querySelectorAll('.check');

                checked[index].checked=mes.checked

                if(mes.checked){

                    $('.check').attr('checked')

                }

                 })

         conuntMoney()

         newlist()

      })

    //   加数量

      function add(id){

         let good=goodslist.find(res=> res.id==id)

         good.count+=1

         if(good.count>10) good.count=10;

         good.price=(good.money*good.count).toFixed(2)

         conuntMoney()

         newlist()

      }

    //   减少数量

      function subtraction(id){

        let good=goodslist.find(res=> res.id==id)

         good.count-=1

         if(good.count<1) good.count=1;

         good.price=(good.money*good.count).toFixed(2)

         conuntMoney()

         newlist()

      }

     function checkwhy(e){

            let desc= goodslist.find(res=>{

              return res.id==e

          })

          desc.checked=!desc.checked

          console.log(desc.checked)

         let allNewcheck=goodslist.every(res=>{return res.checked })

         $('.checkAll').prop('checked',allNewcheck)  

          conuntMoney()

          newlist()

      }

      function del(e){

        let goodse= goodslist.filter(res=>{

            return e!=res.id

         })

         console.log(goodse)

         goodslist=goodse

         conuntMoney()

         newlist()

      }

     </script>

    </body>

    </html>

    相关文章

      网友评论

          本文标题:jquery之手写购物车

          本文链接:https://www.haomeiwen.com/subject/jwhqvktx.html