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横向下拉菜单(兼容IE6)

    下面是关于CSS横向下拉菜单的完整攻略。 什么是CSS横向下拉菜单? CSS横向下拉菜单是指通过CSS样式,实现的一种横向排列的菜单,并且可以在鼠标悬浮或点击某一菜单项时,出现下拉菜单的效果。这种菜单在网页设计中比较常见,因为横向排列比竖向排列更容易呈现出菜单的整体感。 实现CSS横向下拉菜单 以下是CSS横向下拉菜单的实现步骤: 首先,在HTML中创建菜单…

    css 2023年6月9日
    00
  • 纯css多种方法实现div中单行文字、多行文字及嵌套div垂直水平居中

    我将对“纯CSS多种方法实现div中单行文字、多行文字及嵌套div垂直水平居中”的攻略进行详细讲解。 单行文字垂直水平居中 对于单行文字的垂直和水平居中,可以通过以下两种方式实现: 方式一:使用flex布局 .container { display: flex; justify-content: center; /* 水平居中 */ align-items:…

    css 2023年6月10日
    00
  • java实现表格tr拖动的实例(分享)

    Java实现表格tr拖动的实例(分享) 1. 背景介绍 在网页开发中,我们经常需要使用表格(table)标签来展示数据,但是默认情况下表格的行(row)是固定的,无法通过拖动来改变行的位置。为了提高用户的体验,我们可以实现表格行的拖动功能。本文将介绍如何使用Java实现表格行的拖动。 2. 实现步骤 2.1 实现思路 我们可以通过以下步骤来实现表格行的拖动功…

    css 2023年6月10日
    00
  • Vue实现无限级树形选择器

    下面是Vue实现无限级树形选择器的完整攻略: 1. 需求分析 首先,我们需要确定本次开发的需求。本次开发要实现一个无限级别的树形选择器,包含以下要求: 根据给定的数据结构渲染树形结构; 支持无限极展开和收起; 支持多选和单选; 支持选择器搜索; 2. 技术选型 基于此,我们可以选择使用Vue.js框架进行开发,并结合Vue组件,Element-ui库来完成组…

    css 2023年6月9日
    00
  • css之clearfix的用法深入理解(必看篇)

    CSS之clearfix的用法深入理解 简介 clearfix 是一种使用 CSS 技术清除浮动的方法。清除浮动后,可以让父元素包含子元素的浮动高度。 原理 产生浮动的元素会脱离文档的流,不再占据文档空间。 父元素如果没有设置高度,则高度为0。子元素设置浮动后,父元素的高度并不会随着子元素高度的改变而改变,即父元素不会自动包含子元素的高度。 clearfix…

    css 2023年6月10日
    00
  • CSS网页设计中的解决方案

    CSS网页设计中的解决方案 在进行CSS网页设计时,我们经常会遇到各种问题和挑战。但是,针对这些问题,我们可以采取一些特定的解决方案来优化我们的CSS代码和网页设计。接下来,我将为大家详细介绍几个CSS网页设计中的解决方案。 1. 减少代码重复 在CSS中,我们应该尽可能避免代码重复,因为CSS代码中重复的代码将影响页面的加载速度,使页面变得缓慢而难以操作。…

    css 2023年6月9日
    00
  • 使用单div实现CSS 绘图方法汇总

    使用单div实现CSS绘图是一种流行的前端技术,可以用来创建形状复杂的图标和图形。该方法的主要原理是使用伪元素(::before和::after)和CSS属性进行样式设置,从而实现绘图效果。下面我将详细讲解单div实现CSS绘图的步骤和技巧。 1. 准备工作 在使用单div进行CSS绘图之前,我们需要准备以下工作:1)HTML代码:在HTML中创建一个有标识…

    css 2023年6月10日
    00
  • CSS的font-size属性及其em值的使用

    以下是详细讲解“CSS的font-size属性及其em值的使用”的完整攻略。 CSS的font-size属性 CSS中的font-size属性用于设置字体大小。可以使用绝对值(如像素)或相对值(如百分比、em)来设置字体大小。 设置绝对值 设置绝对值的字体大小不会随着浏览器窗口大小的改变而自适应调整。下面是一些常见的绝对值单位: px:像素 pt:点 in:…

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