Js实现简单购物车系统

本次实验目的主要是熟悉对document方法的使用,比如append()、setAttribute()、querySelectAll()等,以及元素的兄弟元素,父亲元素的操作。
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
	<style type="text/css">
		table th, td{
			
			border: 1px solid white;
		}
		table th {
			background-color: #B0C4DE;
		}
		table td{
			background-color: #F0F0F0;
		}
		table{
			text-align: center;
			width:800px;
		}
		
	</style>
</head>
<body>
    <div id="box">
        <div id="addGoods">
            商品名称:<input type="text" id="goodsName"><br />
            商品价格:<input type="text" id="goodsPrice"><br />
            商品数量:<input type="text" id="goodsAmounts"><br />
			<input type="button" value="添加" id="add" onclick="addGoods()"/>
        </div>
		<div id="goodsCar">
			<h2>购物车</h2>
			<table >
				<tr>
					<th><input type="checkbox"></th>
					<th>名称</th>
					<th>价格</th>
					<th>数量</th>
					<th>小计</th>
					<th>操作</th>
				
			</table>
			
			总计:<input type="text" id="total" />
			<input type="button" id="onput" value="提交订单" />
		</div>
    </div>
	
	<script type="text/javascript">
		function addGoods(){
			var nameDom = document.getElementById('goodsName');
			var priceDom = document.getElementById('goodsPrice');
			var amountDom = document.getElementById('goodsAmounts');
			//创建表格
			var tableDom = document.querySelector('table');
			var trDom = document.createElement('tr');
			//第一列
			var td1Dom = document.createElement('td');
			var td1 =document.createElement('input');
			td1.type = 'checkbox';
			td1Dom.append(td1)
			trDom.append(td1Dom);
			
			//第二列
			var td2Dom = document.createElement('td');
			var td2 = "《" + nameDom.value + "》";
			td2Dom.append(td2)
			trDom.append(td2Dom);
			
			//第三列
			var td3Dom = document.createElement('td');
			var td3 = priceDom.value;
			td3Dom.append(td3)
			trDom.append(td3Dom);
			
			//第四列
			var td4Dom = document.createElement('td');
			var subBtn = document.createElement('button');
			subBtn.setAttribute("name","decr")
			td4Dom.append(subBtn);
			
			
			
			var inputDom = document.createElement('input');
			inputDom.type = 'text'
			inputDom.setAttribute("name","count")
			inputDom.style.width = "30px";
			inputDom.style.textAlign = "center";
			inputDom.value = amountDom.value
			td4Dom.append(inputDom);
			
			
			
			var addBtn = document.createElement('button');
			addBtn.setAttribute("name","incr");
			td4Dom.append(addBtn);
			trDom.append(td4Dom);
			
			
			//第五列----小计
			var td5Dom = document.createElement('td');
			td5Dom.setAttribute("name","subTotal")
			var td5 = 0;
			td5 = priceDom.value * amountDom.value;
			td5Dom.append(td5);
			trDom.append(td5Dom);
			//第六列
			var td6Dom = document.createElement('td');
			var deleteBtn = document.createElement('input');
			deleteBtn.type = 'button'
			deleteBtn.value = "删除";
			deleteBtn.setAttribute("name","reBtn")
			td6Dom.append(deleteBtn);
			trDom.append(td6Dom);
			tableDom.append(trDom);
			//最后一行
			var totalDom = document.getElementById('total');
			var caculDom = document.querySelectorAll("[name=subTotal]");
			var total = 0;
			for(var i = 0;i < caculDom.length;i++){
				total += parseFloat(caculDom[i].innerText);
			}
			totalDom.value = total;
			totalDom.style.width = "50px";
			//单击事件
			var subDom = document.querySelectorAll("[name=decr]");
			
			for(var i = 0;i < subDom.length;i++){
				subDom[i].onclick = function sub(){
					var num = this.nextElementSibling;
					total = total - parseFloat(priceDom.value)
					num.value = parseInt(num.value) - 1;
					this.parentElement.nextElementSibling.innerText = priceDom.value * num.value
					totalDom.value = total
				}
			}
			var addDom = document.querySelectorAll("[name=incr]");
			
			for(var i = 0;i < addDom.length;i++){
				addDom[i].onclick = function add(){
					var num = this.previousElementSibling;
					total = total + parseFloat(priceDom.value)
					num.value = parseInt(num.value) + 1;	
					this.parentElement.nextElementSibling.innerText = priceDom.value * num.value
					totalDom.value = total
				}
			}
			//删除
			var deleteDom = document.querySelectorAll("[name=reBtn]");
			for(var i = 0;i < deleteDom.length;i++)
			{
				deleteDom[i].onclick = function dele(){
					console.log(this.parentElement.previousElementSibling.innerText)
					var num = this.parentElement.previousElementSibling.innerText;
					total = total - parseFloat(num)
					totalDom.value = total
					var dele = this.parentElement.parentElement.remove();
					}				
			}
			//提交订单
			var checkDom = document.querySelectorAll("td [type=checkbox]");
			var onputDom = document.getElementById('onput');
			var allPrice = 0;
			console.log(checkDom)
			onputDom.onclick = function onput(){
				for(var i = 0 ;i<checkDom.length;i++){
						if(checkDom[i].checked){
							 var xiaoji = checkDom[i].parentElement.nextElementSibling.nextElementSibling.nextElementSibling.nextElementSibling.innerText;
							allPrice += parseFloat(xiaoji)
						}
					}
					alert('下单成功     '+allPrice)
				}
		}
	</script>
</body>
</html>
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
作为AI助手,我可以提供一份JavaScript代码示例,但是,需要明确的是,这个购物车系统要求比较丰富,需要考虑到用户添加商品、删除商品、清空购物车、计算总价、结算等功能。下面是一个简单购物车系统实现: HTML部分: ```html <div id="cart"> <h3>购物车</h3> <ul id="cart-items"></ul> <p>总价:<span id="total-price">0</span>元</p> <button id="clear-cart">清空购物车</button> <button id="checkout">结算</button> </div> <div id="products"> <h3>商品列表</h3> <ul id="product-list"> <li data-id="1" data-price="100"> 商品1 - 100元 <button class="add-to-cart">添加到购物车</button> </li> <li data-id="2" data-price="200"> 商品2 - 200元 <button class="add-to-cart">添加到购物车</button> </li> <li data-id="3" data-price="300"> 商品3 - 300元 <button class="add-to-cart">添加到购物车</button> </li> </ul> </div> ``` JavaScript部分: ```js // 获取元素 const cart = document.getElementById('cart'); const cartItems = document.getElementById('cart-items'); const totalPrice = document.getElementById('total-price'); const clearCartBtn = document.getElementById('clear-cart'); const checkoutBtn = document.getElementById('checkout'); const productList = document.getElementById('product-list'); // 购物车数据 let cartData = []; // 添加商品到购物车 function addToCart(id, price) { // 判断购物车中是否已经有该商品 const itemIndex = cartData.findIndex(item => item.id === id); if (itemIndex === -1) { cartData.push({ id, price, quantity: 1 }); } else { cartData[itemIndex].quantity++; } updateCart(); } // 从购物车中删除商品 function removeFromCart(id) { const itemIndex = cartData.findIndex(item => item.id === id); if (itemIndex !== -1) { cartData.splice(itemIndex, 1); } updateCart(); } // 清空购物车 function clearCart() { cartData = []; updateCart(); } // 更新购物车 function updateCart() { cartItems.innerHTML = ''; let total = 0; cartData.forEach(item => { const li = document.createElement('li'); li.innerText = `商品${item.id} × ${item.quantity} - ${item.price * item.quantity}元`; const removeBtn = document.createElement('button'); removeBtn.innerText = '删除'; removeBtn.addEventListener('click', () => removeFromCart(item.id)); li.appendChild(removeBtn); cartItems.appendChild(li); total += item.price * item.quantity; }); totalPrice.innerText = total; } // 绑定添加到购物车按钮事件 const addBtns = document.querySelectorAll('.add-to-cart'); addBtns.forEach(btn => { const parent = btn.parentNode; const id = parent.getAttribute('data-id'); const price = parent.getAttribute('data-price'); btn.addEventListener('click', () => addToCart(id, price)); }); // 绑定清空购物车按钮事件 clearCartBtn.addEventListener('click', clearCart); // 绑定结算按钮事件 checkoutBtn.addEventListener('click', () => alert(`结算:${totalPrice.innerText}元`)); ``` 这段代码实现了一个简单购物车系统,包括了添加商品、删除商品、清空购物车、计算总价、结算等功能。但是,这个系统还有很多可以优化的地方,比如可以添加商品数量输入框、商品图片、商品名称等信息,可以使用localStorage等技术实现数据持久化等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值