JavaScript编写一个简易购物车功能

实现一个简易购物车功能,需要以下步骤:

第一步:创建HTML页面

创建一个HTML页面,用于展示商品列表、购物车内容和总价。

<!DOCTYPE html>
<html>
  <head>
    <title>购物车</title>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>商品列表</h1>
    <ul id="item-list">
      <li>
        <span>商品A</span>
        <button class="add-to-cart" data-price="50">加入购物车</button>
      </li>
      <li>
        <span>商品B</span>
        <button class="add-to-cart" data-price="100">加入购物车</button>
      </li>
    </ul>
    <h1>购物车</h1>
    <ul id="cart-list"></ul>
    <p>总价:<span id="total-price">0</span>元</p>
    <script src="app.js"></script>
  </body>
</html>

第二步:编写JavaScript代码

在HTML页面中添加一个JavaScript文件的引用,并在该文件中实现购物车的逻辑。

首先,为加入购物车的按钮添加事件监听器,当按钮被点击时,将商品信息添加到购物车中。

const cart = [];

document.querySelectorAll('.add-to-cart').forEach(button => {
  button.addEventListener('click', event => {
    const price = Number(event.target.dataset.price);
    const item = {
      name: event.target.previousElementSibling.textContent,
      price: price
    };
    cart.push(item);
    renderCart();
  });
});

接着,实现购物车的渲染逻辑,将购物车中的商品展示出来,并计算总价。

function renderCart() {
  const cartListElement = document.getElementById('cart-list');
  const totalPriceElement = document.getElementById('total-price');
  cartListElement.innerHTML = '';
  let totalPrice = 0;
  cart.forEach(item => {
    const li = document.createElement('li');
    li.textContent = `${item.name}: ${item.price}元`;
    cartListElement.appendChild(li);
    totalPrice += item.price;
  });
  totalPriceElement.textContent = totalPrice;
}

示例说明1

假设我们要加入一件名为“商品C”的商品,价格为80元,那么在页面上添加如下代码:

<li>
  <span>商品C</span>
  <button class="add-to-cart" data-price="80">加入购物车</button>
</li>

这样,在用户点击“加入购物车”按钮时,该商品就会被添加到购物车中,并在购物车列表中展示。

示例说明2

假设用户希望删除购物车中的某个商品,我们可以为每个购物车项添加“删除”按钮,并在JavaScript代码中实现点击事件的处理函数。

cartListElement.addEventListener('click', event => {
  if (event.target.classList.contains('remove')) {
    const index = event.target.dataset.index;
    cart.splice(index, 1);
    renderCart();
  }
});

当用户点击“删除”按钮时,该商品将会从购物车中删除,并重新计算总价。同时,在购物车列表中也将该商品对应的项删除。

<li>
  商品C: 80元
  <button class="remove" data-index="0">删除</button>
</li>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript编写一个简易购物车功能 - Python技术站

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

相关文章

  • 解析CSS中的Grid布局完全指南

    解析CSS中的Grid布局完全指南攻略 什么是Grid布局 Grid布局是一种用于布局网页的CSS技术,它基于网格系统,能够帮助我们更轻松地划分页面中的各个区域,并使其能够适配不同的屏幕尺寸。使用Grid布局,开发者可以更加高效地控制页面中元素的对齐方式、大小和位置。 如何使用Grid布局 定义容器 要使用Grid布局,需要先定义容器。在CSS中,使用dis…

    css 2023年6月9日
    00
  • 关于XSL – XSL教程

    关于XSL – XSL教程是一篇介绍XSL语言的文章,其主要内容包括XSL的作用、语法规则、应用场景等。 XSL的作用 XSL是一种用于描述XML文档展示方式的语言,它可以将XML文档转换成其他格式的文档,如HTML、PDF、XML、SVG等,使得XML文档可以在浏览器中呈现出来,并进行样式控制和定制化输出。 XSL的语法规则 XSL的基本结构 XSL通常由…

    css 2023年6月10日
    00
  • 详解CSS多种三列自适应布局实现

    首先我们需要明确三列自适应布局的概念,即页面中有三列,左右两列宽度固定,中间一列宽度自适应。我们可以使用CSS实现这种布局,下面是使用多种方法实现三列自适应布局的详细攻略: 1. 方法一:使用 float 属性实现三列自适应布局 在HTML中,我们需要使用一个 div 容器来包含左、右、中三列,同时要设置盒子模型(box-sizing)属性为border-b…

    css 2023年6月10日
    00
  • 通过CSS显示垂直文本以垂直方式显示文本元素

    实现垂直显示文本的方式主要有两种:一种是利用CSS3的transform属性进行操作,另一种是利用writing-mode属性。 通过transform属性 transform属性是CSS3中的属性,用于对元素进行变形,包括旋转、倾斜、缩放、位移等。我们可以利用它来旋转文本元素以实现垂直显示的效果。 首先,我们需要将文本元素的display属性设置为inli…

    css 2023年6月10日
    00
  • 纯CSS定位的固定垂直居中浮动层代码,附经典解说 《详解定位与定位应用》

    《详解定位与定位应用》是一本经典的前端技术书籍,其中包含了许多关于定位与定位应用的知识。本文主要讲解该书中的一个例子,即“纯CSS定位的固定垂直居中浮动层代码”。 这个浮动层代码主要通过CSS样式实现,具体实现方法如下: HTML代码: <div class="wrapper"> <div class="box…

    css 2023年6月9日
    00
  • 如何用JavaScript实现动态修改CSS样式表

    下面我将详细讲解如何用JavaScript实现动态修改CSS样式表。 一、获取并修改样式表内容 首先,我们需要获取样式表的DOM对象。可以通过以下方式获取: let styleSheet = document.styleSheets[0]; 其中,styleSheets属性返回一个包含页面中所有样式表的数组,我们可以通过数组下标指定所要修改的样式表对象。修改…

    css 2023年6月9日
    00
  • CSS3实现一根心爱的二踢脚示例代码

    我将为您详细讲解如何实现“CSS3实现一根心爱的二踢脚示例代码”。 什么是“一根心爱的二踢脚示例代码”? 在这一段中,我们需要先明确一下什么是“一根心爱的二踢脚示例代码”。这个示例代码指的是一种前端界比较流行的效果:当用户点击按钮时,页面会有翻转效果,将页面上方的内容翻转成另一张图片。 如何使用CSS3实现“一根心爱的二踢脚示例代码”? 接下来,我们具体介绍…

    css 2023年6月10日
    00
  • html5+css3之动画在webapp中的应用

    下面我就来详细讲解“html5+css3之动画在webapp中的应用”的完整攻略。 简介 随着移动设备的普及,webapp已经成为许多企业推广的新方式。在webapp中,动画效果的运用可以给用户带来更好的体验,进而提高用户对产品的喜好度。本篇攻略将介绍如何使用html5和css3实现动画效果,让webapp更加生动有趣。 HTML5中的动画 HTML5中的动…

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