值得观看的模拟购物车功能

页面功能:

当点击全选按钮时,所有的单选按钮被选中,并在,小计和下方总计显示价格

当点击+和-按钮时,数量进行改变,小计页同样进行改变

详细代码如下:

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./jq.js"></script>
    <style>
        table,
        th,
        td {
            border: 1px solid black;
        }

        table {
            border-collapse: collapse;
            margin-top: 30px;
            margin-bottom: 30px;
            width: 600px;
            text-align: center;
        }

        td,
        th {
            width: 120px;
        }

        button {
            border: 0;
        }
    </style>
</head>

<body>
    <table>
        <tr>
            <th><button class="all">全选</button></th>
            <th>商品名称</th>
            <th>单价</th>
            <th>数量</th>
            <th>小计</th>
            <th>操作</th>
        </tr>
        <tr>
            <td><input type="checkbox" name="" class="getGoods"> </td>
            <td>电脑</td>
            <td class="price">200</td>
            <td>
                <button class="jian">-</button>
                <span>1</span>
                <button class="add">+</button>
            </td>
            <td class="total">200</td>
            <td>删除</td>
        </tr>
        <tr>
            <td><input type="checkbox" name="" class="getGoods"> </td>
            <td>手机</td>
            <td class="price">100</td>
            <td>
                <button class="jian">-</button>
                <span>1</span>
                <button class="add">+</button>
            </td>
            <td class="total">100</td>
            <td>删除</td>
        </tr>
    </table>
    <div>
        <span>总计:</span>
        <span class="sum">0</span>
    </div>
    <script>
        //<script src="./jq.js">引入JQuery


        //加载页面时调用总价函数
        getSum();

        //1.加减功能

        //加法,通过add类名,获取button按钮add
        $(".add").click(function () {//当+按钮点击时
            // 1.1 算出数量变化
            let num = parseInt($(this).prev().text());//获取span的值,$this代表 <button class="add">+</button> .prve()上边的元素.text内容
            //获得的内容是String通过parseInt转换为整数
            num++;
            $(this).prev().text(num);//加加之后再进行赋值
            // 1.2 算出 小计价格
            let price = parseInt($(this).parent().prev().text());//获取price价格,通过add按钮获取父元素,再获取上一元素,在类型转换
            $(this).parent().next().text(price * num);//通过add按钮获取父元素,再获取下一元素,再进行赋值,在类型转换

            // 调用 总价
            getSum();
        })
        //加法,通过add类名,获取button按钮jian
        $(".jian").click(function () {
            // 1.1 算出数量变化
            let num = parseInt($(this).next().text());//获取span的值,$this代表 <button class="add">+</button> .next()下边的元素.text内容
            //获得的内容是String通过parseInt转换为整数
            num--;
            if (num < 1) {
                num = 1;
            }
            $(this).next().text(num);//减减之后再进行赋值
            // 1.2 算出 小计价格
            let price = parseInt($(this).parent().prev().text());//获取price价格,通过add按钮获取父元素,再获取上一元素,在类型转换
            $(this).parent().next().text(price * num);//通过add按钮获取父元素,再获取下一元素,再进行赋值,在类型转换

            // 调用 总价
            getSum();
        })

        // 2.总价 = 小计之和(选中条件下)设计函数
        function getSum() {
            let sum = 0;
            for (let i = 0; i < $('.total').length; i++) {//$('.total').length每点击一次后的小计得长度
                // 添加 选中判断的条件
                if ($('.total').eq(i).parent().find('input').prop('checked')) {
                    sum += parseInt($('.total').eq(i).text())//获取每一次小计的值
                }
            }
            $('.sum').text(sum);//给下方span总数进行赋值
        }

        // 3. 选中
        // 选中:有三种表现形式  
        // 1> 用户点击 出现 √    
        // 2> 添加属性 checked    
        // 3> js操作  attr()   /  prop('checked',true)

        // 3.1 全选
        $('.all').click(function () {//当全选按钮all点击时
            $('.getGoods').prop('checked', true);//让所有的单选按钮getGood选中
            // 调用 总价
            getSum();
        });
        // 3.2 用户选中
        $('.getGoods').click(function () {
            // 用户点击,其实已经选中了

            // 调用 总价
            getSum();
        });
    </script>
</body>

</html>

结果:

当点击第一个单选框时:

 

当点击按钮+时:

 

 当点击按钮-时:

 

当点击全选按钮时:

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /** * 购物车类 */ public class Cart { //创建一个map对象,用来保存商品,key为商品,value为商品的数量 private Map<Goods, Integer> map = new HashMap<Goods, Integer>(); /** * 添加商品到购物车方法 * @param id 商品编号 * @param quantity 商品数量 */ public void addGoods(int id, int quantity){ Goods goods = GoodsDB.goodsMap.get(id); if(goods!=null){ Integer oQuantity = map.get(goods);//获取商品在购物车中原本的数量 if(oQuantity!=null){ oQuantity += quantity; }else{ oQuantity = quantity; } map.put(goods, oQuantity);//添加商品到map中 System.out.println("添加商品"+goods.getName()+"成功!"); }else{ System.out.println("添加失败!商品编号不存在!"); } } /** * 按指定的编号删除商品 * @param id 商品编号 */ public void delGoods(int id){ Goods goods = GoodsDB.goodsMap.get(id); if(goods!=null){ map.remove(goods);//从map删除商品 System.out.println("删除商品"+goods.getName()+"成功!"); }else{ System.out.println("删除失败!商品编号不存在!"); } } /** * 修改商品数量方法 * @param id 商品编号 * @param quantity 要修改的商品数量 */ public void updateGoods(int id, int quantity){ Goods goods = GoodsDB.goodsMap.get(id); if(goods!=null){ map.put(goods, quantity);//从map删除商品 }else{ System.out.println("修改失败!商品编号不存在!"); } } /** * 打印购物车商品列表 */ public void show(){ Set<Entry<Goods, Integer>> entrySet = map.entrySet(); System.out.println("编号\t单价\t数量\t名称\t总价"); for(Entry<Goods, Integer> entry:entrySet){ Goods goods = entry.getKey(); Integer quantity = entry.getValue(); System.out.println(goods.getId()+"\t"+goods.getPrice()+"\t"+quantity+"\t"+goods.getName()+"\t"+goods.getPrice()*quantity); } } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值