以下是一个使用JavaScript实现的简单购物车示例代码:
一、基础概念
二、代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF - 8">
<meta name="viewport" content="width=device-width, initial - scale = 1.0">
<title>购物车示例</title>
</head>
<body>
<h1>商品列表</h1>
<div id="product - list">
<div class="product">
<span>苹果</span>
<span>5元</span>
<button onclick="addToCart('苹果', 5)">添加到购物车</button>
</div>
<div class="product">
<span>香蕉</span>
<span>3元</span>
<button onclick="addToCart('香蕉', 3)">添加到购物车</button>
</div>
</div>
<h1>购物车</h1>
<div id="cart - list"></div>
<script>
// 购物车数组,用于存储商品对象
let cart = [];
function addToCart(name, price) {
// 查找购物车中是否已有该商品
let existingProduct = cart.find(item => item.name === name);
if (existingProduct) {
existingProduct.quantity++;
} else {
cart.push({
name: name,
price: price,
quantity: 1
});
}
updateCartDisplay();
}
function updateCartDisplay() {
let cartList = document.getElementById('cart - list');
cartList.innerHTML = '';
let total = 0;
cart.forEach(item => {
let div = document.createElement('div');
div.innerHTML = `${item.name} - 单价: ${item.price}元 - 数量: ${item.quantity} <button onclick="decreaseQuantity('${item.name}')"> - </button><button onclick="increaseQuantity('${item.name}')"> + </button>`;
cartList.appendChild(div);
total += item.price * item.quantity;
});
cartList.innerHTML += `<div>总价: ${total}元</div>`;
}
function increaseQuantity(name) {
let existingProduct = cart.find(item => item.name === name);
if (existingProduct) {
existingProduct.quantity++;
updateCartDisplay();
}
}
function decreaseQuantity(name) {
let existingProduct = cart.find(item => item.name === name);
if (existingProduct && existingProduct.quantity > 1) {
existingProduct.quantity--;
updateCartDisplay();
}
}
</script>
</body>
</html>
三、优势
四、应用场景
五、可能遇到的问题及解决方法
addToCart
函数中,在更新购物车数组后,可以将cart
数组转换为JSON字符串并存储到localStorage中,在页面加载时从localStorage中读取数据并转换为数组。let storedCart = localStorage.getItem('cart'); if (storedCart) { cart = JSON.parse(storedCart); updateCartDisplay(); }
updateCartDisplay
函数末尾添加:localStorage.setItem('cart', JSON.stringify(cart));
领取专属 10元无门槛券
手把手带您无忧上云