写一个简单的购物车功能代码并解释
时间: 2023-10-18 11:31:39 浏览: 101
好的,下面是一个简单的购物车功能代码,包括添加商品、删除商品、计算商品总价、展示商品详情等功能。
HTML结构:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
<style>
/* CSS样式,用于美化购物车界面 */
.cart {
margin: 20px auto;
width: 600px;
border: 1px solid #ccc;
padding: 20px;
font-size: 16px;
line-height: 1.5;
}
.cart h2 {
margin-top: 0;
font-size: 24px;
font-weight: normal;
}
.cart table {
width: 100%;
}
.cart td {
padding: 10px;
}
.cart td.price {
text-align: right;
}
.cart .total {
font-size: 18px;
font-weight: bold;
text-align: right;
margin-top: 20px;
}
.cart .btn {
display: inline-block;
background-color: #f00;
color: #fff;
padding: 5px 10px;
border-radius: 5px;
cursor: pointer;
margin-right: 10px;
}
</style>
</head>
<body>
<div class="cart">
<h2>购物车</h2>
<table>
<thead>
<tr>
<th>商品名称</th>
<th>数量</th>
<th>单价</th>
<th>小计</th>
<th>操作</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="total">总价:0元</div>
</div>
<script src="cart.js"></script>
</body>
</html>
```
JavaScript交互:
```javascript
// 购物车数据
var cartData = [];
// 获取元素
var table = document.querySelector('.cart table');
var tbody = table.querySelector('tbody');
var total = document.querySelector('.cart .total');
// 渲染购物车
function renderCart() {
// 清空表格
tbody.innerHTML = '';
// 遍历购物车数据,渲染表格行
for (var i = 0; i < cartData.length; i++) {
var item = cartData[i];
var tr = document.createElement('tr');
tr.innerHTML = `
<td>${item.name}</td>
<td>${item.quantity}</td>
<td class="price">${item.price.toFixed(2)}元</td>
<td class="price">${(item.price * item.quantity).toFixed(2)}元</td>
<td>
<button class="btn btn-remove" data-index="${i}">删除</button>
</td>
`;
tbody.appendChild(tr);
}
// 计算总价
var totalPrice = 0;
for (var i = 0; i < cartData.length; i++) {
totalPrice += cartData[i].price * cartData[i].quantity;
}
total.innerHTML = '总价:' + totalPrice.toFixed(2) + '元';
}
// 添加商品
function addItem(name, price) {
// 判断购物车中是否已有该商品
for (var i = 0; i < cartData.length; i++) {
if (cartData[i].name === name) {
cartData[i].quantity++;
renderCart();
return;
}
}
// 如果购物车中没有该商品,则添加到购物车
cartData.push({
name: name,
price: price,
quantity: 1
});
renderCart();
}
// 删除商品
function removeItem(index) {
cartData.splice(index, 1);
renderCart();
}
// 绑定事件
table.addEventListener('click', function(event) {
if (event.target.classList.contains('btn-remove')) {
var index = event.target.dataset.index;
removeItem(index);
}
});
// 初始化购物车
renderCart();
```
以上代码实现了以下功能:
1. 渲染购物车:通过`renderCart`函数将购物车数据渲染到表格中,并计算商品总价。
2. 添加商品:通过`addItem`函数将商品添加到购物车中,如果购物车中已有该商品,则数量加1;否则添加新商品。
3. 删除商品:通过`removeItem`函数从购物车中删除指定的商品。
其中,购物车数据使用一个数组`cartData`来保存,每个元素包含商品名称、单价和数量等信息。购物车界面使用HTML和CSS构建,JavaScript实现交互功能。
阅读全文