购物车计算总结(分功能)(如侵权就删)

这是一个简单的购物车页面,包含两个购物项,每个购物项包括商品名称、商品价格、数量、增加和减少按钮。页面下方的总价会实时计算购物项中商品的总价。

JavaScript代码中,首先获取了增加和减少按钮以及总价元素的DOM对象。然后定义了一个变量priceSum用于记录商品的总价。为增加按钮和减少按钮添加了点击事件监听器,当点击增加按钮时,使用querySelector()方法获取到商品名称、商品价格和数量的DOM元素,从中分别获取商品价格和数量的值,数量加1,商品总价加上商品单价,更新总价元素的文本。当点击减少按钮时,同样也获取到商品名称、商品价格和数量的DOM元素,判断商品数量是否大于1,是则数量减1,商品总价减去商品单价,更新总价元素的文本。最后使用toFixed()方法保留两位小数,并将总价和“元”拼接起来显示。

HTML部分:

<body>
        <div class="cart-item">
          <span class="item-name">商品A</span>
          <span class="item-price">10 元</span>
          <span class="quantity">1</span>
          <button class="increment-btn">+</button>
          <button class="decrement-btn">-</button>
        </div>
        
        <div class="cart-item">
          <span class="item-name">商品B</span>
          <span class="item-price">15 元</span>
          <span class="quantity">1</span>
          <button class="increment-btn">+</button>
          <button class="decrement-btn">-</button>
        </div>
        
        <hr>
        
        <div class="cart-summary">
          <span class="summary-label">总价:</span>
          <span id="total-price">0 元</span>
        </div>
    </body>

这是一个简单的购物车页面,包含两个购物项,每个购物项包括商品名称、商品价格、数量、增加和减少按钮。页面下方的总价会实时计算购物项中商品的总价。具体来说:

- 每个商品项包括三个元素:商品名称(使用span元素包裹)、商品价格(使用span元素包裹)、数量(使用span元素包裹)以及增加按钮(使用button元素)、减少按钮(使用button元素);
- 页面下方的总价元素包括两个元素:总价的标签文字(使用span元素包裹)以及显示总价的元素(使用span元素,并添加了一个id属性,方便JavaScript代码获取);
- 所有元素都使用class属性来进行样式控制。

<script>
        let incrementBtns = document.getElementsByClassName('increment-btn');
        let decrementBtns = document.getElementsByClassName('decrement-btn');
        let totalPrice = document.getElementById('total-price');
        
        // 初始化总价
        let priceSum = 0;
        
        // 为增加按钮添加点击事件
        for (let i = 0; i < incrementBtns.length; i++) {
          incrementBtns[i].addEventListener('click', function() {
            let item = this.parentElement;
            let price = parseFloat(item.querySelector('.item-price').textContent);
            let quantity = parseInt(item.querySelector('.quantity').textContent);
            
            quantity += 1;
            item.querySelector('.quantity').textContent = quantity;
            priceSum += price;
            
            totalPrice.textContent = priceSum.toFixed(2) + " 元";
          });
        }


        
        // 为减少按钮添加点击事件
        for (let i = 0; i < decrementBtns.length; i++) {
          decrementBtns[i].addEventListener('click', function() {
            let item = this.parentElement;
            let price = parseFloat(item.querySelector('.item-price').textContent);
            let quantity = parseInt(item.querySelector('.quantity').textContent);
            
            if (quantity > 0) {
              quantity -= 1;
              item.querySelector('.quantity').textContent = quantity;
              priceSum -= price;
              
              totalPrice.textContent = priceSum.toFixed(2) + " 元";
            }
          });
        }
    </script>

这段JavaScript代码实现了购物车的核心功能,包括两个部分:

1. 初始化总价

首先,使用JavaScript获取增加按钮、减少按钮和总价元素的引用,然后初始化总价的变量值为0。

2. 为增加和减少按钮添加点击事件

使用for循环遍历所有的增加按钮和减少按钮,并为它们分别添加点击事件。

增加按钮点击事件处理函数的逻辑如下:

- 获取当前购物项的元素;
- 通过元素的querySelector方法获取商品价格元素和数量元素的引用,并分别获取它们的值;
- 将数量加1,并将结果更新到数量元素;
- 将商品价格累加到总价变量中;
- 将总价更新到总价元素上。

减少按钮点击事件处理函数的逻辑如下:

- 获取当前购物项的元素;
- 通过元素的querySelector方法获取商品价格元素和数量元素的引用,并分别获取它们的值;
- 如果数量大于0,则将数量减1,并将结果更新到数量元素;
- 将商品价格从总价变量中减去;
- 将总价更新到总价元素上。

最后,调用toFixed方法将总价的小数位数保留两位。

最后总代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
    </head>
    <body>
        <div class="cart-item">
          <span class="item-name">商品A</span>
          <span class="item-price">10 元</span>
          <span class="quantity">0</span>
          <button class="increment-btn">+</button>
          <button class="decrement-btn">-</button>
        </div>
        
        <div class="cart-item">
          <span class="item-name">商品B</span>
          <span class="item-price">15 元</span>
          <span class="quantity">0</span>
          <button class="increment-btn">+</button>
          <button class="decrement-btn">-</button>
        </div>
        
        <hr>
        
        <div class="cart-summary">
          <span class="summary-label">总价:</span>
          <span id="total-price">0 元</span>
        </div>
    </body>
    <script>
        let incrementBtns = document.getElementsByClassName('increment-btn');
        let decrementBtns = document.getElementsByClassName('decrement-btn');
        let totalPrice = document.getElementById('total-price');
        
        // 初始化总价
        let priceSum = 0;
        
        // 为增加按钮添加点击事件
        for (let i = 0; i < incrementBtns.length; i++) {
          incrementBtns[i].addEventListener('click', function() {
            let item = this.parentElement;
            let price = parseFloat(item.querySelector('.item-price').textContent);
            let quantity = parseInt(item.querySelector('.quantity').textContent);
            
            quantity += 1;
            item.querySelector('.quantity').textContent = quantity;
            priceSum += price;
            
            totalPrice.textContent = priceSum.toFixed(2) + " 元";
          });
        }
        
        // 为减少按钮添加点击事件
        for (let i = 0; i < decrementBtns.length; i++) {
          decrementBtns[i].addEventListener('click', function() {
            let item = this.parentElement;
            let price = parseFloat(item.querySelector('.item-price').textContent);
            let quantity = parseInt(item.querySelector('.quantity').textContent);
            
            if (quantity > 0) {
              quantity -= 1;
              item.querySelector('.quantity').textContent = quantity;
              priceSum -= price;
              
              totalPrice.textContent = priceSum.toFixed(2) + " 元";
            }
          });
        }
    </script>
</html>

小白一枚;大佬勿喷

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值