js实现简单的购物车有图有代码

让我来为大家详细讲解一下如何用js实现简单的购物车吧。

1. 确定数据结构

在开始实现购物车之前,我们需要先确定其数据结构。在此,我们可以采用一个数组来储存购物车中的商品信息,其中每个元素都是一个对象,包含商品的相关信息:名称、价格、数量等,示例代码如下:

let cart = [
  { name: "商品1", price: 10, quantity: 1 },
  { name: "商品2", price: 20, quantity: 2 },
  { name: "商品3", price: 30, quantity: 1 }
];

2. 从页面中获取商品信息

为了将商品添加到购物车中,我们需要先从页面中获取其相关信息,包括商品名称、价格和数量等。可以通过事件监听器实现这一过程,例如点击“添加到购物车”按钮时获取相应商品信息,示例代码如下:

const addBtn = document.querySelector(".add-to-cart");
addBtn.addEventListener("click", function(e) {
  e.preventDefault();
  const name = document.querySelector(".product-name").textContent;
  const price = document.querySelector(".product-price").textContent;
  const quantity = document.querySelector(".product-quantity").value;
  addToCart(name, price, quantity);
});

3. 实现添加到购物车的函数

在从页面中获取商品信息后,我们需要将其添加到购物车之中。实现这一过程的函数可称之为addToCart,功能是接收商品相关信息,生成一个对象,并将其添加到购物车数组中。示例代码如下:

function addToCart(name, price, quantity) {
  for (let i = 0; i < cart.length; i++) {
    if (cart[i].name === name) {
      cart[i].quantity += parseInt(quantity);
      saveCart();
      return;
    }
  }
  const item = { name, price, quantity: parseInt(quantity) };
  cart.push(item);
  saveCart();
}

在这个函数中,我们首先遍历购物车数组来查找是否有与目标商品同名的商品,如果有,则增加数量;否则,生成一个新的商品对象并添加到购物车数组中。

4. 显示购物车中的商品信息

为了向用户展现购物车中的商品信息,我们需要实现一个展示购物车列表的函数,可以逐个遍历购物车数组并动态地生成HTML代码。示例代码如下:

function displayCart() {
  const cartList = document.querySelector(".cart-list");
  cartList.innerHTML = "";
  for (let i = 0; i < cart.length; i++) {
    let itemHTML = `<li class="cart-item">
                      <div class="cart-item-info">
                        <span class="cart-item-name">${cart[i].name}</span>
                        <span class="cart-item-price">$${cart[i].price}</span>
                        <span class="cart-item-quantity">${cart[i].quantity}</span>
                        <span class="cart-item-total">$${cart[i].price * cart[i].quantity}</span>
                      </div>
                      <button class="cart-item-remove" data-name="${cart[i].name}">Remove</button>
                    </li>`;
    cartList.innerHTML += itemHTML;
  }
}

5. 保存购物车信息并将其恢复

为了实现持久化存储,我们需要将购物车信息保存在本地存储中,方便用户刷新页面或关闭浏览器后继续使用。保存购物车信息的函数如下:

function saveCart() {
  localStorage.setItem("cart", JSON.stringify(cart));
}

为了在用户再次打开页面时恢复购物车信息,我们需要编写一个从本地存储中读取购物车信息的函数,并在页面加载时调用它,示例代码如下:

window.addEventListener('load', function() {
  const savedCart = JSON.parse(localStorage.getItem('cart'));
  if (savedCart) {
    cart = savedCart;
    displayCart();
  }
});

示例1:添加商品到购物车

以下是HTML页面中添加商品到购物车的代码:

<h2 class="product-name">商品1</h2>
<p class="product-price>10</p>
<input class="product-quantity" type="number" value="1">
<button class="add-to-cart">Add to Cart</button>

这段代码展示了一个商品名称、价格和数量以及一个“添加到购物车”按钮。在用户点击这个按钮时,通过事件监听器从页面中获取商品信息,然后调用addToCart函数将其添加到购物车中。

示例2:删除购物车中的商品

以下是从购物车中删除单个商品的代码:

const cartList = document.querySelector(".cart-list");
cartList.addEventListener("click", function(e) {
  const target = e.target;
  if (target.classList.contains("cart-item-remove")) {
    const name = target.getAttribute("data-name");
    removeFromCart(name);
    displayCart();
  }
});

function removeFromCart(name) {
  for (let i = 0; i < cart.length; i++) {
    if (cart[i].name === name) {
      cart.splice(i, 1);
      saveCart();
      return;
    }
  }
}

这段代码展示了当用户点击一个“Remove”按钮时,将调用从购物车中删除单个商品的removeFromCart函数并更新购物车列表。在这个函数中,我们首先遍历购物车数组找到需要删除的商品对象,然后使用splice方法将其从购物车数组中删除。最后调用saveCart函数保存购物车信息。

总的来说,实现一个简单的购物车需要考虑很多方面,涉及到数据结构、页面交互、本地存储等多个方面,希望这篇攻略能给大家带来一些帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现简单的购物车有图有代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 浅谈JavaScript节流和防抖函数

    浅谈JavaScript节流和防抖函数 前言 在前端开发中,我们经常会遇到需要监听用户操作并执行相应任务的情况,例如用户在搜索框中输入关键词时,会实时通过ajax请求获取匹配结果;用户在滚动页面时,会自动加载更多的内容等等。但是由于用户的操作往往不可预测,当用户频繁进行操作时,会导致一些性能问题,如频繁地发送请求,重复执行相同的逻辑等等。这时候,就需要用到节…

    JavaScript 2023年6月10日
    00
  • JS实现网页抢购功能(触发,终止脚本)

    JS实现网页抢购功能可以基于浏览器的自动化工具,如selenium或者puppeteer,完成批量请求或模拟用户行为。在实现过程中,需要明确以下几个步骤: 登录并保持会话:在许多电商网站中,进行抢购之前首先需要登录账户。可以通过模拟登录的方式,实现自动输入账号密码并完成登录。在登录完成之后,需要保持会话以便于提交订单等后续的操作。 找到目标商品页面:一般情况…

    JavaScript 2023年6月10日
    00
  • 深入理解javascript严格模式(Strict Mode)

    深入理解JavaScript严格模式 JavaScript严格模式(Strict Mode)是ECMAScript 5引入了一种新的执行模式,主要用于消除JavaScript语言的一些不合理、不严谨之处,减少一些怪异行为。 启用严格模式 全局启用严格模式 要想在全局范围启用严格模式,需要在JavaScript源码文件的顶部添加如下代码: "use …

    JavaScript 2023年5月28日
    00
  • jquery处理json对象

    一、简介 在前端开发中,处理 JSON 数据是一项基本技能,而 jQuery 正是我们最常使用的 JS 库之一。本文将详细介绍 jQuery 如何处理 JSON 数据对象。 二、jQuery 处理 JSON 将 JSON 字符串转换为 JavaScript 对象 使用 JSON.parse() 方法,可以将 JSON 字符串转换为 JavaScript 对象…

    JavaScript 2023年5月27日
    00
  • JavaScript实现网页加载进度条代码超简单

    介绍 在这里,我将为您介绍如何使用JavaScript创建网页加载进度条。网页加载进度条是增加用户体验和减少用户等待时间的一种简单方法。它可以在页面加载过程中告诉用户页面是否正在加载,以及有多少量未加载。使用JavaScript实现网页加载进度条并不难,让我们开始吧! 步骤 创建 HTML 页面 首先,我们需要创建一个 HTML 页面来包含进度条。我们将创建…

    JavaScript 2023年6月11日
    00
  • javascript asp教程错误处理

    接下来我将会给出一个完整的JavaScript ASP教程错误处理攻略,包含代码示例。 JavaScript ASP教程错误处理攻略 什么是错误处理? 在ASP中,错误处理是用于捕获和解决在代码运行时发生的错误和异常的技术。当您的代码出现错误时,错误处理将停止代码的执行, 并提供一些信息,比如错误类型、行号、错误描述等等,以方便调试和修复页面。 如何进行错误…

    JavaScript 2023年6月10日
    00
  • 判定对象是否为window的js代码

    判定对象是否为window的js代码可以采用以下两种方式进行判断: 方式一:使用window对象自带的属性 在JavaScript中,window是一个全局对象,因此可以通过window对象来判定一个对象是否为window。window对象有一个自带的属性window,该属性指向window自身。因此如果待判断的对象和window自身完全相等,或者和wind…

    JavaScript 2023年6月11日
    00
  • 详解Nginx服务器中的Socket切分

    详解Nginx服务器中的Socket切分 本文将详细介绍Nginx服务器中的Socket切分机制,包括其作用、实现原理、应用场景和示例说明,以帮助读者更好地理解和应用。 作用 Nginx服务器中的Socket切分是一项优化技术,旨在提高服务器性能和稳定性。具体来说,它可以将一个完整的Socket连接切分成多个子连接,将流量分散到多个进程或线程中处理,从而减轻…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部