用JavaScript来做简单的购物车案例

 css代码:

        * {
            margin: 0;
            padding: 0;
        }

        a {
            text-decoration: none;
            color: rgb(54, 53, 53);
        }

        .container {
            width: 1000px;
            margin: 20px auto;
        }

        .container .logo {
            margin-bottom: 20px;
        }

        .container table {
            width: 100%;
        }

        .container table tr {
            line-height: 40px;
            text-align: center;

        }

        .container table tr td,
        th {
            border-bottom: 1px dashed gray;
        }

        .container table input[type="button"] {
            width: 20px;
        }

        .container table input[name="amount"] {
            width: 40px;
            text-align: center;
        }

        .container h3 {
            text-align: right;
        }

        .container .total-price {
            color: red;
        }

html文件:

 <div class="container">
        <div class="logo">
            <img src="../../12.6    day11/课后/当当/images/dd_logo.jpg" alt="logo">
        </div>
        <table>
            <tr>
                <th>商品图片</th>
                <th>商品信息</th>
                <th>单价</th>
                <th>数量</th>
                <th style="width: 100px;">总价</th>
                <th>操作</th>
            </tr>
            <tr>
                <td><img src="../../12.6    day11/课后/当当/images/shoppingBg_03.jpg" alt=""></td>
                <td>javascript高级编程</td>
                <td>¥45.8</td>
                <td><input type="button" name="minus" value="-"><input type="text" name="amount" value="0"><input
                        type="button" name="plus" value="+"></td>
                <td>¥0</td>
                <td>
                    <a href="#">移入收藏</a><br>
                    <a href="#">删除</a>
                </td>
            </tr>

            <tr>
                <td><img src="../../12.6    day11/课后/当当/images/shoppingBg_06.jpg" alt=""></td>
                <td>css高级编程</td>
                <td>¥38.8</td>
                <td><input type="button" name="minus" value="-"><input type="text" name="amount" value="0"><input
                        type="button" name="plus" value="+"></td>
                <td>¥0</td>
                <td>
                    <a href="#">移入收藏</a><br>
                    <a href="#">删除</a>
                </td>
            </tr>
        </table>
        <div>
            <h3>商品总价:<span class="total-price">¥0</span></h3>
        </div>
    </div>

JavaScript部分:

<script>
        //点击加号是出现的情况
        function getPlus() {
            var increase = document.querySelectorAll('input[name = "plus"]') //通过querySelectorAll获取加号的元素,并赋值给increase
            for (var i = 0; i < increase.length; i++) { //利用for循环遍历
                increase[i].onclick = function () { //利用事件绑定写法
                    var amountPlus = this.previousElementSibling //通过获取元素节点的方式,获得数量的元素节点 --<input type="text" name="amount" value="0">(this表示当前点击的元素,previousElementSibling是当前元素节点的上一级元素节点)
                    var numberPlus = amountPlus.value //由于amountPlus是表单元素,可以直接在其后加value,获得numberPlus的值
                    numberPlus++ //每次点击加号的时候,numberPlusr都会进行自增
                    amountPlus.value = numberPlus //将自增的值返回给amountPlus.value
                    var minusEle = amountPlus.previousElementSibling
                    minusEle.removeAttribute('disabled')  //5.移除disabled作用:让减号可用
                     //计算当点击加按钮时,出现的单个商品总价
                    var totalSingle = this.parentElement.previousElementSibling //通过获取元素节点的方式,获得单价的元素节点 --<td>¥45.8</td> (this表示当前点击的元素,parentElement表示当前元素的父元素,previousElementSibling是当前元素节点的上一级元素节点)
                    totalSingle = totalSingle.innerHTML //通过innerHTML获取totalSingle的元素内容 --¥45.8
                    totalSingle = totalSingle.substring(1) // 通过字符串的截取字符串方法substring(1)将¥截取掉,得到值 45.8
                    var totalSinglePrice = this.parentElement.nextElementSibling //通过获取元素节点的方式,获得单个商品的总价的元素节点 -- <td>¥0</td> (this表示当前点击的元素,parentElement表示当前元素的父元素,previousElementSibling是当前元素节点的下一级元素节点)
                    totalSinglePrice.innerHTML =`¥${(totalSingle*numberPlus).toFixed(2)}` //通过通过innerHTML获取totalSinglePrice的元素内容,即单价和次数的乘积
                    getTotalPricePlus()
                }
            }

        } 

        //点击减号是出现的情况
        function getReduce() {
            var subtract = document.querySelectorAll('input[name="minus"]') //通过querySelectorAll获取减号的元素,并赋值给subtract
            for (var i = 0; i < subtract.length; i++) { //利用for循环遍历
                subtract[i].onclick = function () { //利用事件绑定写法
                    var amountSubtract = this.nextElementSibling //通过获取元素节点的方式,获得数量的元素节点 --<input type="text" name="amount" value="0">(this表示当前点击的元素,previousElementSibling是当前元素节点的下一级元素节点)
                    var numberReduce = amountSubtract.value //由于amountPlus是表单元素,可以直接在其后加value,获得numberReduce的值
                    numberReduce-- //每次点击减号的时候,numbeReduce都会进行自增
                    if (numberReduce <= 0) {
                        //减数量不可用
                        this.setAttribute('disabled', true) //添加disabled作用: 让减号不可用
                    }
                    amountSubtract.value = numberReduce //减一后的数量重新赋值给数量节点元素
                    //计算当点击减按钮时,出现的单个商品总价
                    var totalSingle = this.parentElement.previousElementSibling //通过获取元素节点的方式,获得单价的元素节点 --<td>¥45.8</td> (this表示当前点击的元素,parentElement表示当前元素的父元素,previousElementSibling是当前元素节点的上一级元素节点)
                    totalSingle = totalSingle.innerHTML //通过innerHTML获取totalSingle的元素内容 --¥45.8
                    totalSingle = totalSingle.substring(1) // 通过字符串的截取字符串方法substring(1)将¥截取掉,得到值 45.8
                    var totalSinglePrice = this.parentElement.nextElementSibling //通过获取元素节点的方式,获得单个商品的总价的元素节点 -- <td>¥0</td> (this表示当前点击的元素,parentElement表示当前元素的父元素,previousElementSibling是当前元素节点的下一级元素节点)
                    totalSinglePrice.innerHTML =`¥${(totalSingle*numberReduce).toFixed(2)}` //通过通过innerHTML获取totalSinglePrice的元素内容,即单价和次数的乘积
                    getTotalPriceReduce()
                }
            }
        }
        function getTotalPricePlus(){
            var increase = document.querySelectorAll('input[name = "plus"]') //通过querySelectorAll获取加号的元素,并赋值给increase
            var total = 0
            for(var i = 0;i<increase.length;i++){
                var totalSinglePrice = increase[i].parentElement.nextElementSibling //通过获取元素节点的方式,获得单个价值总价的元素节点-- <td>¥0</td> (this表示当前点击的元素,parentElement表示当前元素的父元素,previousElementSibling是当前元素节点的下一级元素节点)
                var totalSingle = totalSinglePrice.innerHTML//通过innerHTML获取totalSinglePrice的元素内容
                totalSingle = totalSingle.substring(1) // 通过字符串的截取字符串方法substring(1)将¥截取掉,得到值
                total += Number(totalSingle) //通过累加的方式,获得最终的总价,注意:这里totalSingle是字符串类型,字符串与数值类型相加时会拼接,所以要将字符串转化为数值类型即Number()方法
            }
            var totalPrice = document.querySelector('.total-price') 
            totalPrice.innerHTML = `¥${total.toFixed(2)}`
        }
        function getTotalPriceReduce(){
            var subtract = document.querySelectorAll('input[name="minus"]') //通过querySelectorAll获取减号的元素,并赋值给subtract
            var total = 0
            for(var i = 0;i<subtract.length;i++){
                var totalSinglePrice = subtract[i].parentElement.nextElementSibling //通过获取元素节点的方式,获得单个价值总价的元素节点-- <td>¥0</td> (this表示当前点击的元素,parentElement表示当前元素的父元素,previousElementSibling是当前元素节点的下一级元素节点)
                var totalSingle = totalSinglePrice.innerHTML//通过innerHTML获取totalSinglePrice的元素内容
                totalSingle = totalSingle.substring(1) // 通过字符串的截取字符串方法substring(1)将¥截取掉,得到值
                total += Number(totalSingle) //通过累加的方式,获得最终的总价,注意:这里totalSingle是字符串类型,字符串与数值类型相加时会拼接,所以要将字符串转化为数值类型即Number()方法
            }
            var totalPrice = document.querySelector('.total-price') 
            totalPrice.innerHTML = `¥${total.toFixed(2)}`
        }
        getPlus()
        getReduce()
    </script>

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您提供一些 HTML 购物动画效果和购物案例。以下是一个简单的示例: HTML 代码: ``` <div class="container"> <div class="product"> <h2>商品1</h2> <p>价格:$10</p> <button class="add-to-cart">加入购物</button> </div> <div class="product"> <h2>商品2</h2> <p>价格:$20</p> <button class="add-to-cart">加入购物</button> </div> <div class="product"> <h2>商品3</h2> <p>价格:$30</p> <button class="add-to-cart">加入购物</button> </div> <div class="cart"> <h2>购物</h2> <ul></ul> <p class="total">总价:$0</p> </div> </div> ``` CSS 代码: ``` .container { display: flex; justify-content: space-around; align-items: center; margin: 50px 0; } .product { text-align: center; margin: 0 20px; } .add-to-cart { background-color: #4CAF50; border: none; color: white; padding: 10px; text-align: center; font-size: 16px; cursor: pointer; } .cart { text-align: center; } .cart ul { list-style-type: none; padding: 0; } .cart li { margin: 10px 0; } .total { font-weight: bold; } ``` JavaScript 代码: ``` const products = document.querySelectorAll('.product'); const cart = document.querySelector('.cart ul'); const total = document.querySelector('.total'); let totalPrice = 0; products.forEach(product => { const button = product.querySelector('.add-to-cart'); button.addEventListener('click', () => { const name = product.querySelector('h2').textContent; const price = parseFloat(product.querySelector('p').textContent.slice(3)); const item = document.createElement('li'); item.textContent = `${name} - $${price}`; cart.appendChild(item); totalPrice += price; total.textContent = `总价:$${totalPrice}`; }); }); ``` 在这个案例中,我们创建了三个商品,每个商品都有一个“加入购物”的按钮。当用户点击按钮时,商品名称和价格将添加到购物列表中,并计算总价格。我们还使用了一些 CSS 样式来使其看起来更好。 希望这个案例对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值