① 编写HTML代码,设计购物车的结构与显示样式。 ② 编写ShopCart对象,用于完成购物车的所有功能。 ③ 编写Find对象,用于获取指定前缀的元素。 ④ 编写Cart对象,用来创建购物车,实现商品的添加、完成购物车的统计、全选以及商品删除功能。 ⑤ 编写Item对象,创建购物车中的一件商品及商品的小计,商品的选择、商品数量的修改以及删除操作。
时间: 2024-03-20 19:42:11 浏览: 64
好的,下面是一个简单的实现购物车的代码示例:
HTML代码:
```html
<div class="cart">
<table>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll">全选</th>
<th>商品名称</th>
<th>单价</th>
<th>数量</th>
<th>小计</th>
<th>操作</th>
</tr>
</thead>
<tbody id="cartList"></tbody>
<tfoot>
<tr>
<td colspan="6" class="totalPrice">总价:<span id="totalPrice">0.00</span>元</td>
</tr>
</tfoot>
</table>
</div>
```
JS代码:
```javascript
var ShopCart = {
// 获取元素
$: function(id) {
return document.getElementById(id);
},
// 获取元素的值
getValue: function(id) {
return this.$(id).value;
},
// 设置元素的值
setValue: function(id, value) {
this.$(id).value = value;
}
};
var Find = {
// 根据前缀查找元素
byPrefix: function(prefix) {
var elements = document.getElementsByTagName("*");
var result = [];
for (var i = 0; i < elements.length; i++) {
if (elements[i].id.indexOf(prefix) == 0) {
result.push(elements[i]);
}
}
return result;
}
};
var Cart = {
// 商品列表
list: [],
// 添加商品
add: function(id, name, price, quantity) {
var item = {
id: id,
name: name,
price: price,
quantity: quantity
};
this.list.push(item);
this.render();
},
// 渲染商品列表
render: function() {
var cartList = ShopCart.$("cartList");
cartList.innerHTML = "";
for (var i = 0; i < this.list.length; i++) {
var item = this.list[i];
var tr = document.createElement("tr");
tr.innerHTML = '<td><input type="checkbox" name="checkItem" value="' + item.id + '"></td>' +
'<td>' + item.name + '</td>' +
'<td>' + item.price + '</td>' +
'<td><input type="number" name="quantity" value="' + item.quantity + '"></td>' +
'<td>' + (item.price * item.quantity).toFixed(2) + '</td>' +
'<td><a href="#" onclick="Cart.remove(' + i + ')">删除</a></td>';
cartList.appendChild(tr);
}
this.updateTotalPrice();
this.bindEvents();
},
// 绑定事件
bindEvents: function() {
var checkAll = ShopCart.$("checkAll");
checkAll.onclick = function() {
var checkItems = document.getElementsByName("checkItem");
for (var i = 0; i < checkItems.length; i++) {
checkItems[i].checked = checkAll.checked;
}
Cart.updateTotalPrice();
};
var checkItems = document.getElementsByName("checkItem");
for (var i = 0; i < checkItems.length; i++) {
checkItems[i].onclick = function() {
Cart.updateTotalPrice();
};
}
var quantityInputs = document.getElementsByName("quantity");
for (var i = 0; i < quantityInputs.length; i++) {
quantityInputs[i].onchange = function() {
var index = this.parentNode.parentNode.rowIndex - 1;
Cart.list[index].quantity = this.value;
Cart.render();
};
}
},
// 删除商品
remove: function(index) {
this.list.splice(index, 1);
this.render();
},
// 更新总价
updateTotalPrice: function() {
var totalPrice = 0;
var checkItems = document.getElementsByName("checkItem");
for (var i = 0; i < checkItems.length; i++) {
if (checkItems[i].checked) {
var index = this.findIndex(checkItems[i].value);
if (index != -1) {
totalPrice += this.list[index].price * this.list[index].quantity;
}
}
}
ShopCart.setValue("totalPrice", totalPrice.toFixed(2));
},
// 查找商品的索引
findIndex: function(id) {
for (var i = 0; i < this.list.length; i++) {
if (this.list[i].id == id) {
return i;
}
}
return -1;
}
};
var Item = {
// 创建商品
create: function(id, name, price, quantity) {
Cart.add(id, name, price, quantity);
}
};
```
以上是一个简单的实现购物车的代码示例,其中包含了购物车的基本功能,您可以根据自己的需求进行修改和扩展。
阅读全文