前言
随着电商业务的逐步发展,购物车成为了任何一家电商网站必备的功能之一。本文将介绍如何使用JavaScript实现一个简单的购物车,包括添加商品、删除商品、清空购物车等基本功能。
HTML 结构
我们先来看一下购物车页面的基本HTML结构。这里,我们采用一个表格来展示购物车中的商品,并用JavaScript来动态生成表格行。
购物车示例
购物车
| 商品名称 | 价格 | 数量 | 操作 |
|---|---|---|---|
| 总价:¥0 | |||
JavaScript 代码
立即学习“Java免费学习笔记(深入)”;
接下来,我们编写JavaScript代码来完成购物车的各种操作。我们先定义一个 Cart 构造函数来代表购物车对象,并添加一些常用方法。具体实现如下:
function Cart() {
this.cartItems = []; // 存储购物车中的商品
this.totalPrice = 0; // 购物车中所有商品的总价
}
// 清空购物车
Cart.prototype.clear = function() {
this.cartItems = [];
this.totalPrice = 0;
};
// 添加商品到购物车中
Cart.prototype.addProduct = function(productName, productPrice, productNumber) {
// 判断购物车中是否已经存在该商品
for (var i = 0; i < this.cartItems.length; i++) {
if (this.cartItems[i].productName === productName) {
this.cartItems[i].productNumber += productNumber;
this.calculateTotalPrice();
return;
}
}
// 如果购物车中不存在该商品,则将该商品添加到购物车中
var newCartItem = {
productName: productName,
productPrice: productPrice,
productNumber: productNumber
};
this.cartItems.push(newCartItem);
this.calculateTotalPrice();
};
// 从购物车中移除指定商品
Cart.prototype.removeProduct = function(productName) {
for (var i = 0; i < this.cartItems.length; i++) {
if (this.cartItems[i].productName === productName) {
this.cartItems.splice(i, 1);
this.calculateTotalPrice();
return;
}
}
};
// 计算购物车中所有商品的总价
Cart.prototype.calculateTotalPrice = function() {
this.totalPrice = 0;
for (var i = 0; i < this.cartItems.length; i++) {
this.totalPrice += this.cartItems[i].productPrice * this.cartItems[i].productNumber;
}
};接下来,我们编写一个函数 renderCart,用来将当前购物车中的商品渲染到表格中显示。具体实现如下:
function renderCart() {
var cartTable = document.getElementById("cartTable");
var cartTbody = cartTable.getElementsByTagName("tbody")[0];
// 先清空表格
cartTbody.innerHTML = "";
for (var i = 0; i < cart.cartItems.length; i++) {
var cartItem = cart.cartItems[i];
var productRow = document.createElement("tr");
var productNameCell = document.createElement("td");
var productNameText = document.createTextNode(cartItem.productName);
productNameCell.appendChild(productNameText);
productRow.appendChild(productNameCell);
var productPriceCell = document.createElement("td");
var productPriceText = document.createTextNode(cartItem.productPrice);
productPriceCell.appendChild(productPriceText);
productRow.appendChild(productPriceCell);
var productNumberCell = document.createElement("td");
var productNumberText = document.createTextNode(cartItem.productNumber);
productNumberCell.appendChild(productNumberText);
productRow.appendChild(productNumberCell);
var removeProductCell = document.createElement("td");
var removeProductButton = document.createElement("button");
removeProductButton.innerHTML = "删除";
(function(index) {
removeProductButton.addEventListener("click", function() {
cart.removeProduct(cart.cartItems[index].productName);
renderCart();
});
})(i);
removeProductCell.appendChild(removeProductButton);
productRow.appendChild(removeProductCell);
cartTbody.appendChild(productRow);
}
// 更新总价
var cartTotalPrice = document.getElementById("cartTotalPrice");
cartTotalPrice.innerHTML = cart.totalPrice;
}最后,在页面加载完成时,我们创建购物车对象并将所有事件绑定到页面元素上。具体实现如下:
var cart = new Cart();
window.onload = function() {
var addProductButton = document.getElementById("addProduct");
addProductButton.addEventListener("click", function() {
var productName = document.getElementById("productName").value;
var productPrice = parseFloat(document.getElementById("productPrice").value);
var productNumber = parseInt(document.getElementById("productNumber").value);
if (productName && productPrice && productNumber) {
cart.addProduct(productName, productPrice, productNumber);
renderCart();
} else {
alert("商品名称、价格和数量都不能为空!");
}
});
var clearCartButton = document.getElementById("clearCart");
clearCartButton.addEventListener("click", function() {
cart.clear();
renderCart();
});
renderCart();
};总结
通过以上JavaScript代码的实现,我们成功地完成了一个简单的购物车功能。我们可以将其应用到各种电商网站中,轻松实现电商业务的购物功能。











