购物车

在这里插入图片描述


<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .block {
            width: 1000px;
            height: auto;
            min-height: 30px;
            margin: auto;
        }

        .b-top {
            display: flex;
            flex-direction: row;
            line-height: 30px;
            font-size: 14px;
            background: #ffe0cb;
            text-align: center;
        }

        .b-lits {
            flex: 1;
        }

        .b-list {
            flex: 2;
        }

        .b-info {
            display: flex;
            flex-direction: column;
        }

        .b-par {
            height: 70px;
            line-height: 70px;
            display: flex;
            flex-direction: row;
            padding: 15px 0;
            border-bottom: 1px dashed silver;
            text-align: center;
        }

        .b-par > div:nth-child(2), .b-par > div:nth-child(5) {
            flex: 2;
        }

        .b-par > div {
            flex: 1;
        }

        .b-par > div:nth-child(3) > img {
            width: 70px;
        }

        .b-par > div:nth-child(5) > button {
            width: 25px;
            height: 25px;
            border-style: none;
            background: orange;
            outline: none;
            color: blue;
            font-size: 17px;
        }

        .b-par > div:nth-child(5) > input {
            width: 25px;
            height: 25px;
            border-style: none;
            outline: none;
            text-align: center;
        }

        .b-par > div:last-child > button {
            width: 60px;
            height: 25px;
            border-style: none;
            color: blue;
            outline: none;
        }

        .b-go {
            display: flex;
            flex-direction: row;
            justify-content: space-between;
        }

        .b-go > div {
            width: 120px;
            height: 40px;
            text-align: center;
            line-height: 40px;
            font-size: 14px;
        }

        .b-go > div:last-child {
            background: red;
            color: #fff;
        }

        input[type=checkbox] {
            outline: none;
        }

        .bgcolor {
            background: pink;
        }
    </style>
</head>
<body>
<div class="block">
    <div class="b-top">
        <div class="b-lits"><input id="ckall" type="checkbox"/> 全选</div>
        <div class="b-list">商品名称</div>
        <div class="b-lits">图片</div>
        <div class="b-lits">单价</div>
        <div class="b-list">数量</div>
        <div class="b-lits">小计</div>
        <div class="b-lits">操作</div>
    </div>
    <div class="b-info">

    </div>
    <div class="b-go">
        <div>
            <input id="ckfan" type="checkbox"/>反选
        </div>
        <div>
            去结算>
        </div>
    </div>
</div>
<script>
    /*
     * 模拟购物车数据
     * */
    var cart = [
        {
            "id": "101321XNMNSDJYE6871DAS21",
            "name": "华为nova5 pro",
            "src": "./cartimage/415d8ef0da06eb00.png",
            "price": "1499",
            "totle": "1499",
            "num": 1
        },
        {
            "id": "101321XNMNSDJYE6871DAS21",
            "name": "华为nova5 pro",
            "src": "./cartimage/415d8ef0da06eb00.png",
            "price": "1499",
            "totle": "1499",
            "num": 1
        },
        {
            "id": "101321XNMNSDJYE6871DAS21",
            "name": "华为nova5 pro",
            "src": "./cartimage/415d8ef0da06eb00.png",
            "price": "1499",
            "totle": "1499",
            "num": 1
        },
        {
            "id": "101321XNMNSDJYE6871DAS21",
            "name": "华为nova5 pro",
            "src": "./cartimage/415d8ef0da06eb00.png",
            "price": "1499",
            "totle": "1499",
            "num": 1
        }
    ]
    var binfo = document.getElementsByClassName("b-info")[0];
    //遍历数据进行动态创建dom元素
    for (var index in cart) {
        /*
         var str = "<div class='b-par'> <div ><input type='checkbox'/></div> <div >商品名称</div> <div>图片</div> <div>单价</div> <div>数量</div> <div>小计</div> <div>操作</div> </div>";
         binfo.innerHTML+=str;*/
        //1创建div
        var par = document.createElement("div");
        par.className = "b-par";
        binfo.appendChild(par);
        //创建行里面的列
        var parchild = document.createElement("div");
        var ckbox = document.createElement("input");
        ckbox.type = "checkbox";
        ckbox.className = "cklist";
        parchild.appendChild(ckbox);

        var parchildname = document.createElement("div");
        parchildname.innerHTML = cart[index].name;

        var parimg = document.createElement("div");
        var img = document.createElement("img");
        img.src = cart[index].src;
        parimg.appendChild(img);

        var parchildprice = document.createElement("div");
        parchildprice.innerHTML = cart[index].price + "¥";
        parchildprice.className = "price";
        parchildprice.setAttribute("data-price", cart[index].totle)


        //数量
        var parchildnumber = document.createElement("div");
        var leftbtn = document.createElement("button");
        leftbtn.innerHTML = "-";
        leftbtn.className = "leftbtn";
        var num = document.createElement("input");
        num.value = cart[index].num;
        num.className = "ipt";
        var rightbtn = document.createElement("button");
        rightbtn.innerHTML = "+";
        rightbtn.className = "rightbtn";
        parchildnumber.appendChild(leftbtn);
        parchildnumber.appendChild(num);
        parchildnumber.appendChild(rightbtn);

        var smalltotle = document.createElement("div");
        smalltotle.innerHTML = cart[index].totle + "¥";
        smalltotle.className = "smalllist";

        var deletepar = document.createElement("div");
        var btndelete = document.createElement("button");
        btndelete.innerHTML = "删除";
        deletepar.appendChild(btndelete);


        par.appendChild(parchild);
        par.appendChild(parchildname);
        par.appendChild(parimg);
        par.appendChild(parchildprice);
        par.appendChild(parchildnumber);
        par.appendChild(smalltotle);
        par.appendChild(deletepar);
    }

    window.onload = function () {
        var ckall = document.querySelector("#ckall");
        var ckfan = document.querySelector("#ckfan");
        var cklist = document.getElementsByClassName("cklist");
        var leftbtn = document.getElementsByClassName("leftbtn");
        var rightbtn = document.getElementsByClassName("rightbtn");
        var price = document.getElementsByClassName("price");
        var ipt = document.getElementsByClassName("ipt");
        var smalllist = document.getElementsByClassName("smalllist");
        var bpar = document.getElementsByClassName("b-par");

        //全选反选
        ckall.onclick = function () {
            if (this.checked) {
                for (var i = 0; i < cklist.length; i++) {
                    cklist[i].checked = true;
                    bpar[i].className = "b-par bgcolor"
                }
            }
            else {
                for (var i = 0; i < cklist.length; i++) {
                    cklist[i].checked = false;
                    bpar[i].className = "b-par"
                }
            }

        }
        ckfan.onclick = function () {
            for (var i = 0; i < cklist.length; i++) {
                cklist[i].checked = !cklist[i].checked;
                if (cklist[i].checked) {
                    bpar[i].className = "b-par bgcolor"
                }
                else {
                    bpar[i].className = "b-par"
                }
            }
        }

        //后边按钮的相关功能
        for (var i = 0; i < leftbtn.length; i++) {
            //每行前面的ckbox 的事件
            cklist[i].index = i;
            cklist[i].onclick = function () {
                if (this.checked) {
                    bpar[this.index].className = "b-par bgcolor"
                }
                else {
                    bpar[this.index].className = "b-par"
                    ckall.checked = false;
                }
            }
            leftbtn[i].index = i;
            leftbtn[i].onclick = function () {
                var val = ipt[this.index].value;
                val--;
                if (val < 1) {
                    val = 1;
                }
                ipt[this.index].value = val;
                smalllist[this.index].innerHTML = smallTotale(price, this.index, val) + "¥";
            }
            rightbtn[i].index = i;
            rightbtn[i].onclick = function () {
                var val = ipt[this.index].value;
                val++;
                ipt[this.index].value = val;
                smalllist[this.index].innerHTML = smallTotale(price, this.index, val) + "¥";
            }
            ipt[i].onkeydown = function (e) {
                if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 8) {
                    if (e.keyCode == 8 && this.value == 1) {
                        alert("该宝贝不能删除");
                        return false;
                    }
                    else if (e.keyCode == 8 && this.value != 1) {
                        this.value = 1;
                        return false;
                    }
                }
                else {
                    return false;
                }
            }
            ipt[i].index = i;
            ipt[i].onkeyup = function () {
                smalllist[this.index].innerHTML = smallTotale(price, this.index, this.value) + "¥";
            }
        }
    }

    //小计
    function smallTotale(obj, index, num) {
        return obj[index].getAttribute("data-price") * num;
    }
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值