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
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单JavaScript程序实现简易购物车的示例: ```javascript // 初始化商品列表 const products = [ { id: 1, name: '商品1', price: 100 }, { id: 2, name: '商品2', price: 200 }, { id: 3, name: '商品3', price: 300 }, { id: 4, name: '商品4', price: 400 }, ] // 初始化购物车 let cart = [] // 添加商品到购物车 function addToCart(id) { const product = products.find(p => p.id === parseInt(id)) if (product) { cart.push(product) console.log(`已添加商品 ${product.name} 到购物车`) } else { console.log('商品不存在') } } // 从购物车中移除商品 function removeFromCart(id) { const index = cart.findIndex(p => p.id === parseInt(id)) if (index !== -1) { const product = cart.splice(index, 1)[0] console.log(`已从购物车中移除商品 ${product.name}`) } else { console.log('购物车中不存在该商品') } } // 计算购物车总价 function getTotalPrice() { return cart.reduce((total, product) => total + product.price, 0) } // 打印购物车商品列表和总价 function printCart() { console.log('购物车商品列表:') cart.forEach(product => console.log(`- ${product.name}(${product.price}元)`)) console.log(`总价:${getTotalPrice()}元`) } // 测试 addToCart(1) addToCart(2) addToCart(3) removeFromCart(2) printCart() ``` 在这个示例中,我们首先定义了一个商品列表和一个购物车数组,然后实现了三个操作函数: - `addToCart(id)`:将指定id的商品添加到购物车中; - `removeFromCart(id)`:从购物车中移除指定id的商品; - `getTotalPrice()`:计算购物车中所有商品的总价。 最后,我们调用了这些函数来测试程序的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值