购物车案例

<!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>购物车</title>
    <style>
        

        h1{
            text-align: center;
            color: pink;
        }

        li{
            list-style: none;
        }

        .girl{
            width: 30px;
            height: 30px;
        }

        .number{
            width: 30px;
        }

    </style>
    <script src="../jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>你想带谁回家呢?</h1>
    <input type="checkbox" id="all">全选
    <ul>
        <li>
            <input type="checkbox" class="girl">
            <img src="../../../../图片/原神/雷泽.png" alt="">
            <strong>奔狼岭的传说</strong>
            <span>
                <button class="cut">-</button>
                <input type="text" class="number" value="1">
                <button class="add">+</button>
            </span>
            <span>单价</span>
            <i>100</i>
            <span>------合计:</span>
            <b>100</b>
        </li>
        <li>
            <input type="checkbox" class="girl">
            <img src="../../../../图片/原神/可莉.png" alt="">
            <strong>逃跑的太阳</strong>
            <button class="cut">-</button>
            <input type="text" class="number" value="1">
            <button class="add">+</button>
            <span>单价</span>
            <i>160</i>
            <span>------合计:</span>
            <b>160</b>
        </li>
        <li>
            <input type="checkbox" class="girl">
            <img src="../../../../图片/原神/砂糖.png" alt="">
            <strong>无害甜度</strong>
            <button class="cut">-</button>
            <input type="text" class="number" value="1">
            <button class="add">+</button>
            <span>单价</span>
            <i>30</i>
            <span>------合计:</span>
            <b>30</b>
        </li>
        <li>
            <input type="checkbox" class="girl">
            <img src="../../../../图片/原神/甘雨.png" alt="">
            <strong>徇循守月</strong>
            <button class="cut">-</button>
            <input type="text" class="number" value="1">
            <button class="add">+</button>
            <span>单价</span>
            <i>1600</i>
            <span>------合计:</span>
            <b>1600</b>
        </li>
        <hr>
        <div>总数:<span id="num">0</span>-----总价:<span id="sum" style="color: red;">0</span></div>
    </ul>

    <script>
        //点击全选后所有角色都被选中,并修改合计
        jQuery('#all').change(function(){
            jQuery('.girl').prop('checked',jQuery('#all').prop('checked'));

            if(jQuery('#all').prop('checked')==true)
            {
                var prices = [...jQuery('li').find('b')];
                var sum = 0;
    
                prices.forEach(function(item,index){
                    sum = sum + parseInt(item.innerHTML);
                    })
            
                jQuery('#sum').text(sum);}
            else{
                jQuery('#sum').text('0');
                }

            if(jQuery('#all').prop('checked')==true)
            {
                var numbers = [...jQuery('li').find("input[type='text']")];
                var number = 0;

                numbers.forEach(function(item){
                    number = number + parseInt(item.value)
                })
                jQuery('#num').text(number);
            }
            else{
                jQuery('#num').text('0');
                }})
                
        //任意角色取消选中后全选取消
        jQuery('.girl').change(function(){
            if(jQuery(this).prop('checked') == false)
            {
                jQuery('#all').prop('checked',false);
            }    
        })
        //所有角色都被选中后全选也被选中
        jQuery('.girl').change(function(){
            if(jQuery(".girl").not("input:checked").length == 0)
            {
                jQuery('#all').prop('checked',true);
            }     
        })
        //选中或取消后修改价格
        jQuery('.girl').change(function(){
            var on = jQuery(this).index('.girl');
            if(jQuery(this).prop('checked') == false){
                newnum = parseInt(jQuery('#num').text()) - parseInt(jQuery("input[type='text']")[on].value);
                jQuery('#num').text(newnum);
                newsum = parseInt(jQuery('#sum').text()) - parseInt(jQuery("b")[on].innerHTML);
                jQuery('#sum').text(newsum);
            }else{
                newnum = parseInt(jQuery('#num').text()) + parseInt(jQuery("input[type='text']")[on].value);
                jQuery('#num').text(newnum);
                newsum = parseInt(jQuery('#sum').text()) + parseInt(jQuery("b")[on].innerHTML);
                jQuery('#sum').text(newsum);
            }
        })
        //点击+按钮增加数量并修改小计和总计
        jQuery('.add').click(function(){     
            var m = jQuery(this).index('.add');
            nownumber = parseInt(jQuery('.number').eq(m).val());
            jQuery('.number').eq(m).val(nownumber+1);

            var price = parseInt(jQuery('i').eq(m).text());
            var now = parseInt(jQuery('b').eq(m).text());
            jQuery('b').eq(m).text(price+now);

            if(jQuery('.girl')[m].checked == true)
            {
                var num = parseInt(jQuery('#num').text())
                num++;
                jQuery("#num").text(num);

                var sum = parseInt(jQuery('#sum').text())
                sum = sum + price;
                jQuery('#sum').text(sum);   
            }            
        })
        //点击-按钮减少数量并修改小计和总计
        jQuery('.cut').click(function(){
            var m = jQuery(this).index('.cut');
            nownumber = parseInt(jQuery('.number').eq(m).val());
            jQuery('.number').eq(m).val(nownumber-1);

            var price = parseInt(jQuery('i').eq(m).text());
            var now = parseInt(jQuery('b').eq(m).text());
            jQuery('b').eq(m).text(now-price);

            if(jQuery('.girl')[m].checked == true)
            {
                var num = parseInt(jQuery('#num').text())
                num--;
                jQuery("#num").text(num);

                var sum = parseInt(jQuery('#sum').text())
                sum = sum - price;
                jQuery('#sum').text(sum);
            }
            })
    </script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex 是一个专为 Vue.js 应用程序设计的状态管理模式,它提供了一种集中存储和管理应用状态的方式,特别适合处理像购物车这样的共享组件状态。下面是一个简单的 Vue.js 和 Vuex 购物车案例代码概览: ```javascript // store/index.js import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { cart: [], // 存放商品列表 totalPrice: 0, // 总价格 }, mutations: { addItem(item) { this.cart.push(item) this.totalPrice += item.price }, removeItem(index) { this.cart.splice(index, 1) this.totalPrice -= this.cart[index].price }, updateItem(index, updatedItem) { // 更新指定商品信息 this.cart[index] = updatedItem // 如果价格变化,更新总价 if (updatedItem.price !== this.cart[index].price) { this.totalPrice = this.cart.reduce((sum, product) => sum + product.price, 0) } }, clearCart() { this.cart.length = 0 this.totalPrice = 0 }, }, actions: { addToCart({ commit }, item) { commit('addItem', item) }, removeFromCart({ commit }, index) { commit('removeItem', index) }, // 更多动作(如更新商品或清空购物车) }, getters: { getCartItems(state) { return state.cart }, getTotalPrice(state) { return state.totalPrice }, }, }) ``` 在这个例子中,`store/index.js` 文件定义了购物车的状态、更改这些状态的方法(mutations)、与状态交互的动作(actions)以及用于读取状态的 getter。 在组件中,你可以这样使用这个状态: ```html <template> <div> <ul> <li v-for="(item, index) in cart" :key="index"> {{ item.name }} - {{ item.price }} <button @click="removeFromCart(index)">Remove</button> </li> </ul> <p>Total price: {{ totalPrice }}</p> <button @click="addToCart({ name: 'New Item', price: 10 })">Add to Cart</button> </div> </template> <script> import { mapState, mapActions } from 'vuex' export default { computed: { ...mapState(['getCartItems', 'getTotalPrice']), // 从 store 中获取数据 }, methods: { ...mapActions(['addToCart', 'removeFromCart']), // 调用 action }, } </script> ``` 以上代码展示了一个基础的购物车功能,实际项目中可能还需要添加错误处理、分页、商品详情等复杂功能。相关问题: 1. 在Vue中,为什么要使用Vuex来管理购物车? 2. getters在Vuex中的作用是什么? 3. 这段代码如何处理购物车中的商品数量变化和价格更新?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值