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

yizhihongxing

让我来为大家详细讲解一下如何用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中英文字符长度统计方法示例【按照中文占2个字符】

    当统计JavaScript字符串长度时,需要注意中文和英文字符的不同处理方式,因为中文字符在Unicode编码中占两个字符的位置,而英文字符只占一个字符位置。 下面介绍几种方法来实现JavaScript中英文字符长度的统计。 方法一:正则表达式 使用正则表达式对中英文字符进行匹配,累加中文字符的个数,即可得到该字符串的长度。 function length(…

    JavaScript 2023年5月28日
    00
  • 学习js所必须要知道的一些

    学习JavaScript所必须要知道的一些攻略 简介 学习JavaScript(以下简称JS)时,需要一些基础知识,其中包括语法、DOM操作、Ajax、闭包等等。下面将详细介绍学习JS的一些必备知识。 1. 语法 1.1 数据类型 JS包含7种不同的数据类型,分为原始类型和对象类型。原始类型包括: 数字(Number):整数或浮点数 字符串(String):…

    JavaScript 2023年5月28日
    00
  • Javascript Web Worker使用过程解析

    Javascript Web Worker使用过程解析 什么是Web Worker? Web Workers是HTML5提出的一项新技术,它是一种运行在后台线程的JavaScript,它允许长时间运行的脚本或计算任务不会影响用户界面的性能或响应性。也就是说,JavaScript代码的处理可以交由浏览器的后台线程中处理,以便在不影响主线程UI的情况下,加速运算…

    JavaScript 2023年5月28日
    00
  • 复制js对象方法(详解)

    复制JS对象是很常见的操作,但是需要注意的是,在JS中,对象是引用类型,因此直接复制对象会导致对象引用被复制,而不是对象本身。这里介绍几种复制JS对象的方法,包括深拷贝和浅拷贝。 浅拷贝 浅拷贝可以简单地理解为将对象的属性复制一份到新的对象中,但是属性值为对象的属性仍然是引用关系。 表达式“{…obj}” ES6中引入了表达式“{…obj}”,可以用…

    JavaScript 2023年5月27日
    00
  • 微信小程序开发之animation循环动画实现的让云朵飘效果

    下面是关于“微信小程序开发之animation循环动画实现的让云朵飘效果”的完整攻略: 1. 了解animation动画 在微信小程序中,我们可以使用animation来创建动画效果。animation可以制作基本的动画类型,如平移、旋转、缩放、透明度等。通过设置animation实例的属性和调用animation的方法,来控制动画的实现。 2. 实现云朵飘…

    JavaScript 2023年6月11日
    00
  • TypeScript命名空间讲解

    TypeScript命名空间讲解 在 TypeScript 中可以使用命名空间来避免命名冲突,它们可以将代码划分为逻辑上相近的部分。命名空间可以帮助我们组织代码并减少全局命名冲突。 命名空间的定义 在 TypeScript 中,命名空间使用 namespace 关键字进行定义。 namespace MyNamespace { // 这里放命名空间中的代码 }…

    JavaScript 2023年6月10日
    00
  • Web安全测试之XSS实例讲解

    Web安全测试是指对Web应用程序进行安全风险评估的过程。其中,XSS(Cross-site scripting)是一种常见的Web安全漏洞,攻击者通过注入脚本代码实现攻击。以下是对“Web安全测试之XSS实例讲解”的完整攻略: 第一步:寻找输入点 首先根据Web应用程序的业务逻辑找到需要输入的点,例如登录、注册、用户评论等。在这些输入点中,可能会存在输入过…

    JavaScript 2023年6月11日
    00
  • JavaScript注释

    JavaScript注释是指在JavaScript代码中添加的文本,旨在对代码进行解释并提高代码的可读性。通常情况下,当写代码时需要将一些重要信息记录下来,供自己或其他开发者参考。JavaScript注释是实现这一目标的一种简单而有效的方式。 JavaScript注释有两种,多行注释和单行注释。通常情况下,多行注释用于对整段代码进行解释,单行注释用于对单行代…

    Web开发基础 2023年3月30日
    00
合作推广
合作推广
分享本页
返回顶部