在JavaScript中实现商品购物车功能,通常涉及以下几个基础概念:
localStorage
或sessionStorage
。可以使用一个数组来存储购物车中的商品对象。
let cart = [];
当用户点击“添加到购物车”按钮时,将商品信息添加到数组中,并保存到localStorage
。
function addToCart(product) {
cart.push(product);
localStorage.setItem('cart', JSON.stringify(cart));
updateCartDisplay();
}
// 示例商品对象
let product = {
id: 1,
name: 'Example Product',
price: 19.99,
quantity: 1
};
// 添加商品到购物车
addToCart(product);
每次添加或修改商品后,需要更新页面上的购物车显示。
function updateCartDisplay() {
let cartElement = document.getElementById('cart');
cartElement.innerHTML = '';
cart.forEach(item => {
let itemElement = document.createElement('div');
itemElement.innerHTML = `
<span>${item.name} - $${item.price} x ${item.quantity}</span>
<button onclick="removeFromCart(${item.id})">Remove</button>
`;
cartElement.appendChild(itemElement);
});
}
当用户点击“移除”按钮时,从数组中移除对应的商品,并更新显示。
function removeFromCart(productId) {
cart = cart.filter(item => item.id !== productId);
localStorage.setItem('cart', JSON.stringify(cart));
updateCartDisplay();
}
页面加载时,从localStorage
中读取购物车数据并显示。
window.onload = function() {
let storedCart = localStorage.getItem('cart');
if (storedCart) {
cart = JSON.parse(storedCart);
updateCartDisplay();
}
};
localStorage
确保刷新页面后购物车数据不丢失。localStorage
有存储容量限制(通常为5MB),如果购物车数据过大,可以考虑使用IndexedDB等更强大的存储方案。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车示例</title>
</head>
<body>
<div id="cart"></div>
<button onclick="addToCart(product)">添加到购物车</button>
<script>
let cart = [];
function addToCart(product) {
cart.push(product);
localStorage.setItem('cart', JSON.stringify(cart));
updateCartDisplay();
}
function removeFromCart(productId) {
cart = cart.filter(item => item.id !== productId);
localStorage.setItem('cart', JSON.stringify(cart));
updateCartDisplay();
}
function updateCartDisplay() {
let cartElement = document.getElementById('cart');
cartElement.innerHTML = '';
cart.forEach(item => {
let itemElement = document.createElement('div');
itemElement.innerHTML = `
<span>${item.name} - $${item.price} x ${item.quantity}</span>
<button onclick="removeFromCart(${item.id})">Remove</button>
`;
cartElement.appendChild(itemElement);
});
}
window.onload = function() {
let storedCart = localStorage.getItem('cart');
if (storedCart) {
cart = JSON.parse(storedCart);
updateCartDisplay();
}
};
let product = {
id: 1,
name: 'Example Product',
price: 19.99,
quantity: 1
};
</script>
</body>
</html>
通过以上步骤和代码示例,可以实现一个基本的JavaScript购物车功能。