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实现飞机大战小游戏”的完整攻略。 1. 确定游戏的基本元素 实现飞机大战小游戏需要确定游戏的基本元素,包括背景、飞机、敌机、子弹等。其中,背景根据游戏风格和需求选择,飞机、敌机、子弹等则需要确定大小、形状和移动方向。 2. 实现游戏的主要功能 实现飞机大战小游戏需要实现以下功能: 控制飞机移动和射击 控制敌机移动和射击 判断…

    JavaScript 2023年6月11日
    00
  • 高效率JavaScript编写技巧整理

    高效率JavaScript编写技巧整理 引言 JavaScript 往往是前端工程师最耗费时间的语言之一,因为它不仅需要考虑代码的逻辑,还需要兼顾用户体验,包括运行时间、渲染时间、页面交互等因素。在这里,我们将为大家整理一些高效率 JavaScript 编写技巧,帮您更好地提高编程效率。 1. 常量和变量的命名 程序的可读性取决于变量和函数的命名,因此需要修…

    JavaScript 2023年5月18日
    00
  • 如何在wxml中直接写js代码(wxs)

    下面是如何在wxml中直接写js代码(wxs)的攻略: 编写wxs文件 首先需要编写wxs文件,在wxs文件中可以编写js代码。在wxml中可以通过< wxs >标签引入wxs文件,引入后可以直接使用wxs中的变量或函数。 示例代码如下: // test.wxs module.exports.add = function (a, b) { ret…

    JavaScript 2023年6月11日
    00
  • js中通过父级进行查找定位元素

    在 JavaScript 中,如果我们需要在当前元素的子元素中查找某个元素,我们可以使用 querySelector() 或 getElementById() 等 DOM API 方法进行定位。但如果我们需要在当前元素的父级或祖先级元素中查找某个元素,该怎么做呢?以下是通过父级定位元素的完整攻略。 1. 使用 parentElement 属性查找父级元素 J…

    JavaScript 2023年6月11日
    00
  • javascript自执行函数

    JavaScript自执行函数(Self-Invoking Function),又叫立即执行函数(Immediately-Invoked Function Expression,IIFE),是一种可以立即自动执行的函数。它的语法结构非常简单: (function(){ // code })(); 上述代码定义了一个匿名函数,并立即执行。整个函数块被包含在一对…

    JavaScript 2023年5月27日
    00
  • Javascript中匿名函数的多种调用方式总结

    Javascript中匿名函数的多种调用方式总结 什么是匿名函数 匿名函数就是没有名字的函数,也称为“内联函数”、“临时函数”或“lambda函数”。 匿名函数的定义方式 函数表达式 函数表达式是定义匿名函数最常用的方式。语法格式如下: var func = function() { // 函数体 } 立即执行函数表达式 立即执行函数表达式是一种定义后就立即…

    JavaScript 2023年6月10日
    00
  • BootstrapValidator验证用户名已存在(ajax)

    让我来为你详细讲解“BootstrapValidator验证用户名已存在(ajax)”的完整攻略。 标题 首先,我们需要给这个攻略起个标题。根据内容,可以考虑起名为“BootstrapValidator验证用户名已存在(ajax)”。 说明 为了实现这个功能,我们需要用到以下内容: BootstrapValidator插件 Ajax请求来检查用户名是否已存在…

    JavaScript 2023年6月10日
    00
  • 指定js可访问其它域名的cookie的方法

    指定js可访问其它域名的cookie的方法又称为“跨域访问”,一般涉及到前后端的交互,可以使用以下两种方法解决: 服务器端设置Access-Control-Allow-Origin响应头 在服务器端的响应头中设置Access-Control-Allow-Origin字段为指定的域名或所有域名(*),可以允许跨域访问,具体代码如下: header("…

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