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日

相关文章

  • 如何将JS的变量值传递给ASP变量

    将JS的变量值传递给ASP变量需要借助AJAX技术来实现,具体步骤如下: 在HTML页面中引入jQuery库和ASP文件: <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script language=&…

    JavaScript 2023年6月11日
    00
  • JS实现的汉字与Unicode码相互转化功能分析

    JS实现的汉字与Unicode码相互转化功能分析 概述 汉字和Unicode码相互转换是前端开发中常用的功能之一。汉字是人类语言和文字的精华,其中汉字的使用非常广泛,而Unicode码则是电脑中汉字的对应编码,当我们需要将汉字和Unicode码相互转换时,用JS实现是一种极其方便且高效的方法。 汉字转Unicode码 在JS中,如果需要将汉字转换为Unico…

    JavaScript 2023年5月19日
    00
  • javascript获取当前的时间戳的方法汇总

    总结 获取当前时间戳是前端开发中常见的操作,通过JavaScript可以实现多种方式获取当前时间戳。本文将综合介绍一些获取当前时间戳的方法。 Date.now()方法 Date.now()方法是ECMAScript 5引入的方法。它返回的是当前时间距离Unix Epoch的毫秒数。Unix Epoch是1970年1月1日UTC的午夜,相当于这一时刻的时间戳为…

    JavaScript 2023年5月27日
    00
  • javascript的动态加载、缓存、更新以及复用(一)

    JavaScript 动态加载、缓存、更新以及复用(一) JavaScript 的动态加载、缓存、更新以及复用是优化前端性能的重要手段。下面将为你详细讲解如何实现。 动态加载 JavaScript 的动态加载可以提高网站的性能,并且在某些情况下可以实现更好的网站交互体验。 在 HTML 文件中动态加载 JavaScript 文件 可以通过在 HTML 文件中…

    JavaScript 2023年5月27日
    00
  • Javascript Math exp() 方法

    JavaScript中的Math.exp()方法用于返回自然数e的x次幂,其中x是传递给该方法的参数。以下是关于Math.exp()方法的完整攻略,包括两个示例。 JavaScript Math对象的exp()方法 JavaScript Math对象中的exp()方法用于返回自然数e的x次幂,其中x是传递给该方法的参数。 下面是exp()方法的语法: Mat…

    JavaScript 2023年5月11日
    00
  • 利用JavaScript制作一个酷炫的3D图片演示

    下面是详细讲解如何利用JavaScript制作一个酷炫的3D图片演示的完整攻略。 准备工作 在开始制作之前,需要先准备好以下内容: 确认浏览器支持 WebGL,对于不支持 WebGL 的浏览器需要添加 fallback 方案以便在不支持 WebGL 的浏览器上能够正常显示。 准备好可以用来渲染的 3D 图片模型,例如 OBJ 格式的 3D 模型。 学习 Th…

    JavaScript 2023年6月10日
    00
  • JavaScript性能陷阱小结(附实例说明)

    JavaScript 性能陷阱是前端开发过程中常见的问题之一。为了避免这些问题,我们需要了解 JavaScript 性能陷阱的原因,并采取相应的措施,优化页面性能。下面是一些比较常见的 JavaScript 性能陷阱及相应的解决方法。 避免使用with关键字 with 语句将一个对象添加到作用域链中,并将该对象的属性作为局部变量,这样就可以直接访问对象属性。…

    JavaScript 2023年5月28日
    00
  • jsonp跨域请求详解

    那么让我们来详细讲解一下“jsonp跨域请求详解”的完整攻略。 什么是jsonp? JSONP(JSON with padding)是 JSON 的一种“使用模式”,可以让网页从别的域名(网站)那获取资料,即跨域请求数据,是一种非正式传输协议。 JSONP通过动态插入script标签的方式实现跨域请求,因为从不同域名下请求js文件是被允许的。JSONP传输的…

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