JS实现简单的购物车

简介: JS实现简单的购物车

以下是一个基本的 JS 购物车实现:

由于是实现基本的功能,就不弄得多复杂了,代码可以直接Ctrl+c/v,大家可以试一试!

HTML:

<div>
  <h2>产品列表</h2>
  <ul id="productList">
    <li data-id="1">
      <h3>商品1</h3>
      <p>价格:10元</p>
      <button class="add-to-cart">添加至购物车</button>
    </li>
    <li data-id="2">
      <h3>商品2</h3>
      <p>价格:20元</p>
      <button class="add-to-cart">添加至购物车</button>
    </li>
    <li data-id="3">
      <h3>商品3</h3>
      <p>价格:30元</p>
      <button class="add-to-cart">添加至购物车</button>
    </li>
  </ul>
</div>
<div>
  <h2>购物车</h2>
  <ul id="cart">
  </ul>
  <p id="totalAmount">总金额:0元</p>
  <button id="checkout">结算</button>
</div>

JS:

const productList = document.getElementById('productList');
const cart = document.getElementById('cart');
const totalAmount = document.getElementById('totalAmount');
const checkoutBtn = document.getElementById('checkout');
const cartItems = {};
// 添加至购物车事件
productList.addEventListener('click', (event) => {
  if (event.target.classList.contains('add-to-cart')) {
    const product = event.target.parentElement;
    const productId = product.getAttribute('data-id');
    const productName = product.querySelector('h3').textContent;
    const productPrice = product.querySelector('p').textContent;
    addItemToCart(productId, productName, productPrice);
  }
});
// 添加物品至购物车
function addItemToCart(id, name, price) {
  if (cartItems[id]) {
    cartItems[id].count++;
    updateCartItem(cartItems[id]);
  } else {
    const item = { id, name, price, count: 1 };
    cartItems[id] = item;
    addCartItem(item);
  }
  updateTotalAmount();
}
// 添加购物车物品
function addCartItem(item) {
  const li = document.createElement('li');
  li.setAttribute('data-id', item.id);
  li.innerHTML = `
    <span>${item.name}</span>
    <span>${item.price}</span>
    <span>${item.count}</span>
    <button class="remove-item">删除</button>
  `;
  cart.appendChild(li);
}
// 更新购物车物品数量
function updateCartItem(item) {
  const cartItem = cart.querySelector(`[data-id="${item.id}"]`);
  cartItem.querySelector('span:nth-of-type(3)').textContent = item.count;
}
// 删除购物车物品事件
cart.addEventListener('click', (event) => {
  if (event.target.classList.contains('remove-item')) {
    const item = event.target.parentElement;
    const itemId = item.getAttribute('data-id');
    delete cartItems[itemId];
    item.remove();
    updateTotalAmount();
  }
});
// 计算总计
function updateTotalAmount() {
  const amount = Object.values(cartItems)
    .reduce((sum, item) => sum + item.price * item.count, 0);
    totalAmount.textContent = `总金额:${amount}元`;
}
// 结算事件
checkoutBtn.addEventListener('click', () => {
  alert('结算成功!');
  cart.innerHTML = '';
  totalAmount.textContent = '总金额:0元';
  cartItems = {};
});

这个简单的购物车实现使用了一个对象 cartItems 作为购物车中的物品,它的键是产品 ID,值是包含产品信息的对象。添加至购物车时,首先检查 cartItems 中是否已经有该产品,有的话数量加一并更新,没有则创建一个新对象并添加到购物车列表中。同时,每次添加或删除购物车物品后都需要更新购物车总计。最后,点击结算按钮后将购物车清空并重置总金额。

相关文章
|
2月前
|
JavaScript
当当网上书店购物车——JS源码
当当网上书店购物车——JS源码
15 0
|
4月前
|
JavaScript
|
6月前
|
缓存 JavaScript 前端开发
Vue.js入门模板语法[上] 及Vue.js实现购物车---详细讲解
Vue.js入门模板语法[上] 及Vue.js实现购物车---详细讲解
32 0
|
8月前
|
前端开发 JavaScript
HTML+CSS+JS仿京东购物车页面动态效果
HTML+CSS+JS仿京东购物车页面动态效果
95 0
|
2月前
|
JavaScript 前端开发
购物车的功能——JS源码
购物车的功能——JS源码
15 2
|
4月前
|
JavaScript 前端开发
js实现购物车效果
js实现购物车效果
23 0
|
4月前
|
存储 前端开发 JavaScript
使用JavaScript实现动态生成并管理购物车的深入解析
使用JavaScript实现动态生成并管理购物车的深入解析
|
4月前
|
存储 JavaScript 前端开发
JS清空购物车后再次添加商品添加不上
JS清空购物车后再次添加商品添加不上
|
4月前
|
JavaScript
JS购物车或表格中减号按钮无法响应的问题
JS购物车或表格中减号按钮无法响应的问题
|
9月前
|
JavaScript
js购物车
js购物车