JavaScript写购物车

  话不多说,看一下图

代码:


<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>购物车</title>
    <style>
        table{
            border-collapse: collapse;
            width: 1000px;
            margin: 0 auto;
        }
        .title{
            font-size: 14px;
        }
        .face{
            width: 80px;
            height: 80px;
        }
        .name{
            color: red;
            font-size: 12px;
            display: inline-block;
            width: 200px;
            margin-left: 10px;
        }
        td{
            padding: 10px 0;
            min-width: 60px;
        }
        .price{
            font-weight: bold;
            color: black;
        }
        .totle{
            font-weight: bold;
            color: red;
        }
        tr{
            border: 1px solid #bfbfbf;
        }
        .btn button{
            width: 30px;
            height: 30px;
            border-style: none;
            background-color: #d4d4d4;
            outline: none;
            cursor: pointer;
        }
        .btn input{
            width: 30px;
            height: 30px;
            border-style: none;
            text-align: center;
        }
    </style>
</head>
<body>
<table>
    <tr class="title">
        <td><input class="ckbox" type="checkbox"/>全选</td>
        <td>商品信息</td>
        <td>单价</td>
        <td>数量</td>
        <td>金额</td>
        <td>操作</td>
    </tr>
    <tr >
        <td><input class="ckbtn" type="checkbox"/></td>
        <td><img align="left" class="face" src="../img/img.jpg" alt=""/>
            <span class="name">女生包包2018新款 搞怪可爱小包包 特别包包女款萌创意少女丑萌包</span>
        </td>
        <td><span class="price" data-price="39.00">¥39.00</span></td>
        <td class="btn"><button class="btnleft">-</button><input class="txt" type="text" value="1"/><button class="btnright">+</button></td>
        <td><span class="totle" data-totle="39.00">¥39.00</span></td>
        <td>删除</td>
    </tr>
    <tr >
        <td><input class="ckbtn" type="checkbox"/></td>
        <td><img align="left" class="face" src="../img/img.jpg" alt=""/>
            <span class="name">女生包包2018新款 搞怪可爱小包包 特别包包女款萌创意少女丑萌包</span>
        </td>
        <td><span class="price" data-price="39.00">¥39.00</span></td>
        <td class="btn"><button class="btnleft">-</button><input class="txt" type="text" value="1"/><button class="btnright">+</button></td>
        <td><span class="totle" data-totle="39.00">¥39.00</span></td>
        <td>删除</td>
    </tr>
    <tr >
        <td><input class="ckbtn" type="checkbox"/></td>
        <td><img align="left" class="face" src="../img/img.jpg" alt=""/>
            <span class="name">女生包包2018新款 搞怪可爱小包包 特别包包女款萌创意少女丑萌包</span>
        </td>
        <td><span class="price" data-price="39.00">¥39.00</span></td>
        <td class="btn"><button class="btnleft">-</button><input class="txt" type="text" value="1"/><button class="btnright">+</button></td>
        <td><span class="totle" data-totle="39.00">¥39.00</span></td>
        <td>删除</td>
    </tr>
    <tr >
        <td><input class="ckbtn" type="checkbox"/></td>
        <td><img align="left" class="face" src="../img/img.jpg" alt=""/>
            <span class="name">女生包包2018新款 搞怪可爱小包包 特别包包女款萌创意少女丑萌包</span>
        </td>
        <td><span class="price" data-price="39.00">¥39.00</span></td>
        <td class="btn"><button class="btnleft">-</button><input class="txt" type="text" value="1"/><button class="btnright">+</button></td>
        <td><span class="totle" data-totle="39.00">¥39.00</span></td>
        <td>删除</td>
    </tr>
    <tr >
        <td><input class="ckbtn" type="checkbox"/></td>
        <td><img align="left" class="face" src="../img/img.jpg" alt=""/>
            <span class="name">女生包包2018新款 搞怪可爱小包包 特别包包女款萌创意少女丑萌包</span>
        </td>
        <td><span class="price" data-price="39.00">¥39.00</span></td>
        <td class="btn"><button class="btnleft">-</button><input class="txt" type="text" value="1"/><button class="btnright">+</button></td>
        <td><span class="totle" data-totle="39.00">¥39.00</span></td>
        <td>删除</td>
    </tr>
    <tr>
        <td><input type="checkbox" class="ckbox"/>全选</td>
        <td colspan="2">已选商品<span class="number">0</span>件</td>
        <td>合计:<span class="totleprice">0</span>元</td>
        <td colspan="2"><button>结算</button></td>
    </tr>
</table>
<script>
    var ckbox=document.getElementsByClassName("ckbox");//获取全选按钮
    var ckbtn=document.getElementsByClassName("ckbtn");//获取商品前的选择按钮
    var count=0;
    //勾选功能
    for(var i=0;i<ckbtn.length;i++){
        ckbtn[i].onclick=function(){
            if(this.checked){
                count++;
            }
            else{
                count--;
            }
            if(count==ckbtn.length){
                ckbox[0].checked=true;
                ckbox[1].checked=true;
            }
            else{
                ckbox[0].checked=false;
                ckbox[1].checked=false;
            }
            addtotle();
        }
    }
    for(var key in ckbox){
        ckbox[key].index =key;
        ckbox[key].onclick=function(){
            ckbox[this.index==0?1:0].checked=!ckbox[this.index==0?1:0].checked;
            if(this.checked){
                for(var i=0;i<ckbtn.length;i++){
                    ckbtn[i].checked=true;
                }
            }
            else{
                for(var i=0;i<ckbtn.length;i++){
                    ckbtn[i].checked=false;
                }
                count=0;
            }
            addtotle();
        }
    }
    //数量加减
    var btnleft=document.getElementsByClassName("btnleft");
    var btnright=document.getElementsByClassName("btnright");
    var txt=document.getElementsByClassName("txt");
    var price=document.getElementsByClassName("price");
    var totle=document.getElementsByClassName("totle");
    var tprice=document.getElementsByClassName("totleprice");
    var nub=document.getElementsByClassName("number");

    for(var i=0;i<btnleft.length;i++){
        btnleft[i].index=i;
        btnleft[i].onclick=function(){
            var num=txt[this.index].value;
            num--;
            if(num<1){
                num=1
            }
            txt[this.index].value=num;
            addprice(this.index,num);
            addtotle();
        };
        btnright[i].index=i;
        btnright[i].onclick=function(){
            var num=txt[this.index].value;
            num++;
            txt[this.index].value=num;
            addprice(this.index,num);
            addtotle();

        }
    }
    function addprice(index,value){
        totle[index].innerHTML="¥"+(price[index].getAttribute("data-price")*value).toFixed(2);//toFixed(2)保留两位小数
        totle[index].setAttribute("data-totle", (price[index].getAttribute("data-price") * value).toFixed(2));
        //setAttribute() 方法添加指定的属性,并为其赋指定的值。如果这个指定的属性已存在,则仅设置/更改值。
        //getAttribute() 方法返回指定属性名的属性值。
    }

    function addtotle(){
        var totleprice=0;
        var number=0;
        for(var i=0;i<ckbtn.length;i++){
            if(ckbtn[i].checked){
                totleprice+=parseFloat(totle[i].getAttribute("data-totle"));
                number+=parseInt(txt[i].value);
            }
        }
        tprice[0].innerHTML="¥"+totleprice.toFixed(2);
        nub[0].innerHTML=number
    }

</script>
</body>
</html>

 

  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的购物车页面的HTML和JavaScript代码示例: HTML代码: ``` <!DOCTYPE html> <html> <head> <title>购物车页面</title> </head> <body> <h1>购物车</h1> <div> <h2>商品列表</h2> <ul id="product-list"></ul> </div> <div> <h2>购物车</h2> <ul id="cart"></ul> <p>总价: <span id="total-price">0</span> 元</p> <button onclick="checkout()">结算</button> </div> <script src="shopping-cart.js"></script> </body> </html> ``` JavaScript代码: ``` // 商品列表 const products = [ {name: "商品1", price: 10}, {name: "商品2", price: 20}, {name: "商品3", price: 30}, {name: "商品4", price: 40}, {name: "商品5", price: 50}, ]; // 购物车 const cart = []; // 获取商品列表元素 const productList = document.getElementById("product-list"); // 获取购物车元素 const cartList = document.getElementById("cart"); // 获取总价元素 const totalPrice = document.getElementById("total-price"); // 渲染商品列表 products.forEach(product => { const item = document.createElement("li"); item.innerHTML = ` <span>${product.name}</span> <span>${product.price}元</span> <button onclick="addToCart(${product.price})">加入购物车</button> `; productList.appendChild(item); }); // 渲染购物车 function renderCart() { cartList.innerHTML = ""; cart.forEach(item => { const li = document.createElement("li"); li.innerHTML = ` <span>${item.name}</span> <span>${item.price}元</span> <button onclick="removeFromCart(${item.price})">删除</button> `; cartList.appendChild(li); }); totalPrice.innerHTML = getTotalPrice(); } // 计算总价 function getTotalPrice() { return cart.reduce((total, item) => total + item.price, 0); } // 添加商品到购物车 function addToCart(price) { const product = products.find(p => p.price === price); if (product) { cart.push(product); renderCart(); } } // 从购物车中删除商品 function removeFromCart(price) { const index = cart.findIndex(item => item.price === price); if (index !== -1) { cart.splice(index, 1); renderCart(); } } // 结算 function checkout() { alert(`总价: ${getTotalPrice()}元`); } ``` 说明: 1. `products`数组保存商品列表,每个商品包含名称和价格两个属性。 2. `cart`数组保存购物车中的商品。 3. 使用`forEach`方法将商品列表渲染到页面上,每个商品都包含名称、价格和“加入购物车”按钮。 4. `addToCart`函数将商品添加到购物车中,如果购物车中已经存在该商品,则不会重复添加。 5. `removeFromCart`函数从购物车中删除商品。 6. `getTotalPrice`函数计算购物车中商品的总价。 7. `renderCart`函数渲染购物车中的商品列表和总价。 8. 点击“加入购物车”按钮或“删除”按钮会触发相应的函数。 9. 点击“结算”按钮会弹出总价的提示框。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值