js实现添加购物车功能

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			* {
				padding: 0;
				margin: 0;
			}

			table {
				position: absolute;
				left: 300px;
				top: 100px;
			}

			th {
				width: 150px;
				height: 50px;
				background: skyblue;
			}

			tr {
				width: 150px;
				height: 50px;
				text-align: center;
			}

			.left {
				width: 200px;
				height: 600px;
				float: left;
				margin-left: 10px;
				margin-top: 10px;
			}

			.right {
				width: 200px;
				height: 600px;
				float: right;
				margin-right: 10px;
				margin-top: 10px;
			}

			.pic {
				width: 100px;
			}

			.money {
				color: red;
			}

			button {
				width: 20px;
			}

			.buy-dish {
				width: 30px;
				text-align: center;
				color: white;
				display: inline-block;
				background: #FF0000;
				font-size: 20px;
				line-height: 20px;
				margin-left: 75px;
				cursor: pointer;
			}

			.buy-dish:hover {
				background: gray;
			}
		</style>
	</head>
	<body>
		<table border="1px" cellspacing="0" cellpadding="0" id="tb">
			<tr>
				<th>商品名称</th>
				<th>数量</th>
				<th>单价</th>
				<th>小计</th>
				<th>操作</th>
			</tr>
			<tr>
				<td>椒盐蘑菇</td>
				<td>
					<button type="button">-</button>
					<span class="goods-num">0</span>
					<button type="button">+</button>
				</td>
				<td>单价:<span class="goods-price">22</span></td>
				<td>小计:<span class="goods-subtota">0</span></td>
				<td>
					操作:<input type="button" name="" class="del" value="删除" />
				</td>
			</tr>
			<tr>
				<td>干锅包菜</td>
				<td>
					<button type="button">-</button>
					<span class="goods-num">0</span>
					<button type="button">+</button>
				</td>
				<td>单价:<span class="goods-price">18</span></td>
				<td>小计:<span class="goods-subtota">0</span></td>
				<td>
					操作:<input type="button" name="" class="del" value="删除" />
			</tr>
			<tr>
				<td>水煮肉片</td>
				<td>
					<button type="button">-</button>
					<span class="goods-num">0</span>
					<button type="button">+</button>
				</td>
				<td>单价:<span class="goods-price">34</span></td>
				<td>小计:<span class="goods-subtota">0</span></td>
				<td>
					操作:<input type="button" name="" class="del" value="删除" />
			</tr>
			<tr id="x">
				<td>重庆辣子鸡</td>
				<td>
					<button type="button">-</button>
					<span class="goods-num">0</span>
					<button type="button">+</button>
				</td>
				<td>单价:<span class="goods-price">48</span></td>
				<td>小计:<span class="goods-subtota">0</span></td>
				<td>
					操作:<input type="button" name="" class="del" value="删除" />
			</tr>
			<tr>
				<td colspan="5">商品总数:<span id="goods-total-num">0</span>,总计<span id="goods-total-price">0</span></td>
			</tr>
			<div class="left">
				<img src="img/1.png" width="200" height="200"><span class="pic">
					<span class="dish-name">锅包肉</span>
					<span class="dish-money">25</span>
					<span class="buy-dish">+</span>
					<img src="img/2.png" width="200" height="200"><span class="pic">
						<span class="dish-name">糖醋里脊</span>
						<span class="dish-money">22</span>
						<span class="buy-dish">+</span>
			</div>
			<div class="right">
				<img src="img/3.png" width="200" height="200"><span class="pic">
					<span class="dish-name">鱼香肉丝</span></span>
				<span class="dish-money">24</span>
				<span class="buy-dish">+</span>
				<img src="img/4.png" width="200" height="200"><span class="pic">
					<span class="dish-name">红烧茄子</span>
					<span class="dish-money">21</span>
					<span class="buy-dish">+</span>
			</div>
		</table>
	</body>
</html>
<script type="text/javascript">
	class Cart {
		constructor() {

		}

		//商品总数

		getGoodsTotalNum() {
			let oGoodsNum = document.getElementsByClassName("goods-num");
			let goodsTotalNum = 0;
			for (let i = 0; i < oGoodsNum.length; i++) {
				goodsTotalNum += Number(oGoodsNum[i].innerHTML);
			}
			let oGoodsTotalNum = document.getElementById("goods-total-num");
			oGoodsTotalNum.innerHTML = goodsTotalNum;
		}

		//商品总价格

		getGoodsTotalPrice() {
			let oGoodsSubtota = document.getElementsByClassName("goods-subtota");
			let goodsTotalPrice = 0;
			for (let i = 0; i < oGoodsSubtota.length; i++) {
				goodsTotalPrice += Number(oGoodsSubtota[i].innerHTML);
			}
			let oGoodsTotalPrice = document.getElementById("goods-total-price");
			oGoodsTotalPrice.innerHTML = goodsTotalPrice;
		}

		//小计

		getGoodsSubtota(num, price) {
			return num * price;
		}

		//增加货物

		getGoodsAdd(btn) {
			let oGoodsNum = btn.previousElementSibling;
			oGoodsNum.innerHTML = (Number(oGoodsNum.innerHTML)) + 1;
			//单价
			let oGoodsPrice = btn.parentNode.nextElementSibling.firstElementChild;
			//小计
			let goodsSubtota = this.getGoodsSubtota(oGoodsNum.innerHTML, oGoodsPrice.innerHTML);
			//找到小计
			let oGoodSubtota = btn.parentNode.nextElementSibling.nextElementSibling.firstElementChild;
			//改变小计的值
			oGoodSubtota.innerHTML = goodsSubtota;
			this.Addcart()
			this.getGoodsTotalNum();
			this.getGoodsTotalPrice();
		}

		//减少货物

		getGoodsReduce(btn) {
			let oGoodsNum = btn.nextElementSibling;
			if (oGoodsNum.innerHTML > 0) {
				let oGoodsNum = btn.nextElementSibling;
				oGoodsNum.innerHTML = (Number(oGoodsNum.innerHTML)) - 1;
				//单价
				let oGoodsPrice = btn.parentNode.nextElementSibling.firstElementChild;
				//小计
				let goodsSubtota = this.getGoodsSubtota(oGoodsNum.innerHTML, oGoodsPrice.innerHTML);
				//找到小计
				let oGoodSubtota = btn.parentNode.nextElementSibling.nextElementSibling.firstElementChild;
				//改变小计的值
				oGoodSubtota.innerHTML = goodsSubtota;
			}
		}

		//删除货物

		goodsDel(btn) {
			let tr = btn.parentNode.parentNode;
			tr.remove();
			this.getGoodsTotalNum();
			this.getGoodsTotalPrice();
		}

		//添加事件
		eventBind() {
			let btn = document.getElementsByTagName("button");
			let that = this;
			let del = document.getElementsByClassName("del");
			for (let i = 0; i < btn.length; i++) {
				if (i % 2 == 0) {
					btn[i].onclick = function(evt) {
						that.getGoodsReduce(this);
					}
				} else {
					btn[i].onclick = function(evt) {
						that.getGoodsAdd(this);
					}
				}
			}
			for (let i = 0; i < del.length; i++) {
				del[i].onclick = function() {
					that.goodsDel(this);
				}
			}
		}
		//添加购物车
		Addcart(){
			let oBuyDish = document.getElementsByClassName("buy-dish");
			let oDishName = document.getElementsByClassName("dish-name");
			let oDishMoney = document.getElementsByClassName("dish-money");
			let that = this;
			for (let i = 0; i < oBuyDish.length; i++) {
				oBuyDish[i].onclick = function(evt) {
					let e = evt || event;
					let target = e.target || e.srcElement;
					let tb = document.getElementById("tb");
					if(target.className=="buy-dish"){
						let tr = tb.insertRow(1);
						tr.innerHTML = "<td>" + oDishName[i].innerText + "</td>" +
							"<td>" + "<button>" + "-" + "</button>" + "<span class='goods-num'>" + 0 + "</span>" + "<button>" + "+" +
							"</button>" + "</td>" +
							"<td>" + "单价:" + "<span class='goods-price'>" + oDishMoney[i].innerText + "</span>" + "</td>" +
							"<td>" + "小计:" + "<span class='goods-subtota'>" + 0 + "</span>" + "</td>" +
							"<td>" + "操作" + "<input type='button' name='' class='del'' value='删除' />" + "</td>";
					}
				}
			}
		}
	}
	let c = new Cart();
	c.Addcart();
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值