利用表单、JS、CSS技术,设计实现一个简易的购物车界面。不能使用div。具体要求: 1、利用CSS样式,对页面进行美化; 2、单击购物车中的复选按钮,可以选中,再次单击可以取消; 3、单击结算,可以将所选物品的价格进行累加;
时间: 2024-03-08 16:50:49 浏览: 154
js+html+css实现简单的购物车
好的,这是一个比较常见的前端实战题目,让我们逐步实现它。
首先,我们需要准备好 HTML 结构,包含商品列表和购物车列表。在商品列表中,每个商品都有一个复选框和一个价格,用于用户选择和计算总价。在购物车列表中,我们将显示用户已经选中的商品和总价。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
}
h1 {
text-align: center;
margin: 20px 0;
}
table {
border-collapse: collapse;
margin: 20px auto;
width: 600px;
}
th, td {
border: 1px solid #ccc;
padding: 10px;
text-align: center;
}
th {
background-color: #f0f0f0;
}
.cart {
position: fixed;
top: 0;
right: 0;
background-color: #f0f0f0;
padding: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
z-index: 9999;
}
.cart h2 {
margin: 0;
font-size: 16px;
}
.cart table {
margin: 10px 0 0;
}
.cart th, .cart td {
border: none;
padding: 5px;
font-size: 14px;
text-align: left;
}
.cart th {
background-color: #fff;
font-weight: normal;
}
.cart td {
border-top: 1px solid #ccc;
}
.cart .total {
font-weight: bold;
}
</style>
</head>
<body>
<h1>购物车</h1>
<table>
<thead>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>选择</th>
</tr>
</thead>
<tbody>
<tr>
<td>商品1</td>
<td>100</td>
<td><input type="checkbox" name="item1"></td>
</tr>
<tr>
<td>商品2</td>
<td>200</td>
<td><input type="checkbox" name="item2"></td>
</tr>
<tr>
<td>商品3</td>
<td>300</td>
<td><input type="checkbox" name="item3"></td>
</tr>
</tbody>
</table>
<div class="cart">
<h2>购物车</h2>
<table>
<thead>
<tr>
<th>商品名称</th>
<th>价格</th>
</tr>
</thead>
<tbody></tbody>
</table>
<div class="total"></div>
<button>结算</button>
</div>
</body>
</html>
```
接下来,我们需要编写 JavaScript 代码,实现以下功能:
1. 当用户单击商品的复选框时,将商品添加到购物车或从购物车中删除。
2. 当用户单击结算按钮时,计算所选商品的总价,并在购物车列表中显示。
3. 当用户取消选择商品时,从购物车中删除商品并重新计算总价。
代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>购物车</title>
<style>
/* CSS 样式 */
</style>
</head>
<body>
<h1>购物车</h1>
<table>
<thead>
<tr>
<th>商品名称</th>
<th>价格</th>
<th>选择</th>
</tr>
</thead>
<tbody>
<tr>
<td>商品1</td>
<td>100</td>
<td><input type="checkbox" name="item1"></td>
</tr>
<tr>
<td>商品2</td>
<td>200</td>
<td><input type="checkbox" name="item2"></td>
</tr>
<tr>
<td>商品3</td>
<td>300</td>
<td><input type="checkbox" name="item3"></td>
</tr>
</tbody>
</table>
<div class="cart">
<h2>购物车</h2>
<table>
<thead>
<tr>
<th>商品名称</th>
<th>价格</th>
</tr>
</thead>
<tbody></tbody>
</table>
<div class="total"></div>
<button>结算</button>
</div>
<script>
// 获取商品列表和购物车列表
var itemList = document.querySelectorAll('input[type="checkbox"]');
var cartList = document.querySelector('.cart tbody');
// 当用户点击商品的复选框时,将商品添加到购物车或从购物车中删除
for (var i = 0; i < itemList.length; i++) {
itemList[i].addEventListener('click', function() {
if (this.checked) {
// 添加商品到购物车
var tr = document.createElement('tr');
var td1 = document.createElement('td');
var td2 = document.createElement('td');
td1.textContent = this.parentNode.parentNode.querySelector('td:first-child').textContent;
td2.textContent = this.parentNode.parentNode.querySelector('td:nth-child(2)').textContent;
tr.appendChild(td1);
tr.appendChild(td2);
cartList.appendChild(tr);
} else {
// 从购物车中删除商品
var tr = cartList.querySelector('tr td:first-child[textContent="' + this.parentNode.parentNode.querySelector('td:first-child').textContent + '"]').parentNode;
cartList.removeChild(tr);
}
// 重新计算总价
var total = 0;
var cartItems = cartList.querySelectorAll('tr');
for (var j = 0; j < cartItems.length; j++) {
total += parseFloat(cartItems[j].querySelector('td:nth-child(2)').textContent);
}
document.querySelector('.cart .total').textContent = '总价:' + total;
});
}
// 当用户点击结算按钮时,计算所选商品的总价,并在购物车列表中显示
document.querySelector('.cart button').addEventListener('click', function() {
alert('总价:' + document.querySelector('.cart .total').textContent);
});
</script>
</body>
</html>
```
这样,我们就完成了这个简易的购物车界面。用户可以在商品列表中选择需要购买的商品,然后单击结算按钮计算总价。购物车列表会实时更新所选商品和总价。
阅读全文