轻松实现购物车功能

开发工具与关键技术:Visual Studio html css javascript
作者:华境聪
撰写时间:2019年04月13日
这里需要注意的是父级和子级的用法,还有for循环的算法相加减。喜欢的朋友可以拿去参考下。
js代码:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>gouwuche</title>
    <script src="~/Content/jquery-2.1.4.min.js"></script>
    <style>
        h1 {
	text-align:center;
}
table {
	margin:0 auto;
	width:60%;
	border:2px solid #aaa;
	border-collapse:collapse;
}
table th,table td {
	text-align:center;
	border:2px solid #aaa;
	padding:5px;
}
thead {
	background-color:#6699CC;
}

    </style>
</head>
<body>
    <h1>国际购物广场</h1>
    <table border="1px" id="thing" class=" table-hover  table-striped  table-bordered">
        <thead>
            <tr>
                <th>商品</th>
                <th>单价</th>
                <th>颜色</th>
                <th>库存</th>
                <th>好评率</th>
                <th>操作</th>
            </tr>
        </thead>@*表头*@
        <tbody id="tb1" class="t1class">
            <tr>
                <td id="0">罗技M185鼠标</td>
                <td>80</td>
                <td>黑色</td>
                <td>666</td>
                <td>98%</td>
                <td align="center"><input class="btn btn-primary" type="button" value="加入购物车" "add_shoppingcar(this)"></td>
            </tr>
            <tr>
                <td>微软X470键盘</td>
                <td>150</td>
                <td>黑色</td>
                <td>999</td>
                <td>98%</td>
                <td align="center"><input class="btn btn-primary" type="button" value="加入购物车" "add_shoppingcar(this)"></td>
            </tr>
            <tr>
                <td>苹果iphone10手机壳</td>
                <td>60</td>
                <td>透明</td>
                <td>333</td>
                <td>98%</td>
                <td align="center"><input class="btn btn-primary" type="button" value="加入购物车" "add_shoppingcar(this)"></td>
            </tr>
            <tr>
                <td>蓝牙耳机</td>
                <td>100</td>
                <td>蓝色</td>
                <td>5651</td>
                <td>99%</td>
                <td align="center"><input class="btn btn-primary" type="button" value="加入购物车" "add_shoppingcar(this)"></td>
            </tr>
            <tr>
                <td>金士顿U盘</td>
                <td>79.8</td>
                <td>金色</td>
                <td>212</td>
                <td>98%</td>
                <td align="center"><input class="btn btn-primary" type="button" value="加入购物车" "add_shoppingcar(this)"></td>
            </tr>
            <tr>
                <td id="0">罗技M1812键盘</td>
                <td>180</td>
                <td>黑色</td>
                <td>666</td>
                <td>98%</td>
                <td align="center"><input class="btn btn-primary" type="button" value="加入购物车" "add_shoppingcar(this)"></td>
            </tr>
        </tbody>@*商品列表*@
    </table>
    <h1>购物车</h1>
    <table border="1px" class=" table-hover  table-striped  table-bordered">
        <thead>
            <tr>
                <th>商品</th>
                <th>单价</th>
                <th>数量</th>
                <th>金额</th>
                <th>删除</th>
            </tr>
        </thead>@*表头*@
        <tbody id="tb2">
        </tbody>@*选择的商品*@
        <tfoot>
            <tr>
                <td colspan="3" align="center">总计</td>
                <td colspan="2" id="total"></td>
            </tr>
        </tfoot>@*收费*@
    </table>
    <script>
        //添加进购物车
        function add_shoppingcar(btn) {
            var tds = $(btn).parents('tr').children('td');//返回当前tr中的td所有的元素
            var name = $(tds[0]).html();//商品
            var price = $(tds[1]).html();//单价
            var kc = parseInt($(tds[3]).html());//parseInt() 函数可解析一个字符串,并返回一个整数。
            kc = kc - 1;
            $(tds[3]).html(kc);
            $trtd = $('<tr>' + '<td>' +
                name +
                '</td>' +
                '<td>' +
                price +
                '</td>' +
                '<td align="center" class="lji">' +
                '<input class="btn btn-primary" type="button" value="-"  "change(this,-1)"   />' +
                '<input  style="text-align: center"    type="text" class="dclass"  size="1"   readonly value="1">' +
                '<input class="btn btn-primary" type="button" value="+"  "change(this,1)"  />' +
                '</td>' + '<td>' + price + '</td>' + '<td align="center">' +
                '<input class="btn btn-primary" type="button" value="X" "del(this);" />' +
                '</td>' + '</tr>')
            $("#tb2").append($trtd);
            total();

        }
        //总计
        function total() {
            var trs = $("#tb2").children("tr");//所选商品的数量
            var sum = 0;//初始化为0
            for (var i = 0; i < trs.length; i++) {
                var tds = $(trs[i]).children("td");//第几个商品
                var m = $(tds[3]).html();//金额
                sum += parseFloat(m);//循环相加商品
            }
            $("#total").html(sum);
        }
        //删除
        function del(btn) {
            var tr1 = $('.t1class').children("tr");
            for (var i = 0; i < tr1.length; i++) {
                var tds = $(tr1[i]).children("td");
                var kc = parseInt($(tds[3]).html());//库存数
                var bs2 = $(tr1[i]).children(0).html();//获取在售商品名称
                var bs = $(btn).parents('tr').children(0).html();//获取购物车商品名称
                if (bs == bs2) {
                    var inputs = $(btn).parent().parent("tr").children().children("input");
                    var amount = parseInt($(inputs[1]).val());
                    kc = kc + amount;
                    $(tds[3]).html(kc);
                }

            }
            $(btn).parent().parent().remove();
            total();
        }
        
        //增加减少
        function change(btn, n) {
            var inputs = $(btn).parent().children("input");
            var amount = parseInt($(inputs[1]).val());
            if (amount <= 1 && n < 0) {//数量减少时
                return;
            }
            $(inputs[1]).val(amount + n);
            var tr1 = $('.t1class').children("tr");//商品全部的长度
            for (var i = 0; i < tr1.length; i++) {
                var bs = $(btn).parents('tr').children(0).html();//当前的选择商品的名称
                var bs2 = $(tr1[i]).children(0).html();//第几个商品的名称
                var tds = $(tr1[i]).children("td");//第几个商品的名称的所有子元素td
                var kc = parseInt($(tds[3]).html());//第几个商品的名称的库存数量
                if (bs == bs2) {//商品名称相同
                    kc = kc - n;
                    $(tds[3]).html(kc);//获取最新库存数
                }
            }
            amount = $(inputs[1]).val();
            var tds = $(btn).parents('tr').children('td');//找到当前选择的位置的父级tr元素的所有子元素td
            var price = parseFloat($(tds[1]).html());
            var m = amount * price;//数量 * 单价
            $(tds[3]).html(m);
            total();
        }
    </script>
</body>
</html>

下面可见输出截图:
在这里插入图片描述

加购之后,统计总金额:
在这里插入图片描述
删除商品后,统计总金额:在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41979469/article/details/89282738
今日推荐