JavaScript实现简单购物小表格

下面是“JavaScript实现简单购物小表格”的完整攻略:

1.准备工作

在HTML中,首先要准备一个表格元素,代码如下:

<table>
  <thead>
    <tr>
      <th>商品</th>
      <th>价格</th>
      <th>数量</th>
      <th>合计</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>商品1</td>
      <td><input class="price" type="number" value="0"></td>
      <td><input class="quantity" type="number" value="1"></td>
      <td class="sub-total">¥0</td>
    </tr>
    <tr>
      <td>商品2</td>
      <td><input class="price" type="number" value="0"></td>
      <td><input class="quantity" type="number" value="1"></td>
      <td class="sub-total">¥0</td>
    </tr>
    <tr>
      <td>商品3</td>
      <td><input class="price" type="number" value="0"></td>
      <td><input class="quantity" type="number" value="1"></td>
      <td class="sub-total">¥0</td>
    </tr>
     <tr>
      <td>总计</td>
      <td colspan="3" class="total">¥0</td>
     </tr>
  </tbody>
 </table>

这里我们用到了表格元素和HTML5中的输入元素,我们为每个商品的单价和数量设置了一个输入框,为了方便计算小计和总计,我们为每个商品的小计设置了一个类名sub-total,并将总计的类名设置为total。

2.编写JavaScript代码

我们可以通过JavaScript来实现当用户输入单价或数量时自动计算小计和总计的功能。首先在HTML代码中添加JavaScript链接:

<script src="shopping.js"></script>

然后在shopping.js文件中编写JavaScript代码:

var tbody = document.querySelector('tbody'); // 获取表格的tbody元素
var trs = tbody.querySelectorAll('tr'); // 获取表格中的所有tr元素
var total = document.querySelector('.total'); // 获取总计元素

for (var i = 0; i < trs.length - 1; i++) { // 循环遍历表格中的每个商品
  trs[i].querySelector('.price').addEventListener('input', calcSubTotal); // 当输入单价时,计算小计
  trs[i].querySelector('.quantity').addEventListener('input', calcSubTotal); // 当输入数量时,计算小计
}

function calcSubTotal() { // 计算小计函数
  var tr = this.parentNode.parentNode; // 获取当前输入框所在的tr元素
  var price = tr.querySelector('.price').value; // 获取单价
  var quantity = tr.querySelector('.quantity').value; // 获取数量
  var subTotal = tr.querySelector('.sub-total'); // 获取小计元素
  subTotal.innerHTML = '¥' + (price * quantity); // 计算小计
  calcTotal(); // 计算总计
}

function calcTotal() { // 计算总计函数
  var trs = tbody.querySelectorAll('tr'); // 获取表格中的所有tr元素
  var sum = 0;
  for (var i = 0; i < trs.length - 1; i++) { // 循环遍历表格中的每个商品
    var subTotal = trs[i].querySelector('.sub-total').innerHTML.replace('¥', ''); // 获取小计并去掉前缀
    sum += parseFloat(subTotal); // 累加小计
  }
  total.innerHTML = '¥' + sum; // 更新总计
}

这段JavaScript代码中,我们首先获取表格的tbody元素、所有tr元素、总计元素,然后遍历所有商品的单价和数量输入框,当输入框内容改变时,调用calcSubTotal函数计算小计并计算总计。最后更新小计和总计元素的内容。

3.运行代码并验证

将HTML和JavaScript代码保存后,我们在浏览器中打开页面,并输入相应的单价和数量,验证小计和总计是否正确。

例如,将商品1的单价设为10元,数量设为2个,那么小计将会是20元,总计将会是20元。又例如,将商品2的单价设为15元,数量设为3个,那么小计将会是45元,总计将会是65元。

这就是实现“JavaScript实现简单购物小表格”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript实现简单购物小表格 - Python技术站

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

相关文章

  • js闭包用法实例详解

    JS闭包用法实例详解 什么是闭包? 闭包是指有权访问另一个函数作用域中变量的函数。创建闭包的常见方式是在一个函数内部创建另一个函数。在创建的内部函数中,可以访问外部函数的参数和变量,即使外部函数已经返回退出。 为什么要使用闭包? 闭包的主要作用是作为函数工厂,可以用来封装变量和方法,使全局变量不被污染。 同时,闭包可以让一个函数访问另一个函数的局部变量,使得…

    JavaScript 2023年5月28日
    00
  • 总结JavaScript中BigIn函数常见的属性

    下面是讲解总结JavaScript中BigIn函数常见属性的完整攻略。 1. BigInt函数的介绍 BigInt是JavaScript中的一个新特性,是一种全新的数字类型。BigInt类型可以表示任意大的整数,而不是限制在Number类型的最大安全整数范围内。BigInt类型使用类似整数的语法来表示,但需要在数字末尾添加一个n后缀。 2. BigInt函数…

    JavaScript 2023年5月28日
    00
  • ajax获取json数据为undefined原因分析

    当我们使用AJAX获取JSON数据时,有时会发现返回的数据无法解析,而返回的结果为undefined。这种情况通常是由于以下原因引起的: 数据格式不正确:JSON 格式要求数据必须为名/值对构成的无序集合。如果返回的数据格式不正确,就无法解析成JSON对象。 跨域请求:由于浏览器的同源策略限制,如果 AJAX 请求的数据源与当前域不一致,则会遇到跨域问题。这…

    JavaScript 2023年6月11日
    00
  • JAVA面试题 static关键字详解

    JAVA面试题 static关键字详解 在Java中,static是一种关键字(也称为修饰符),它可以修饰类、方法和变量。在这篇文章中,我们将详细讨论关于static关键字的使用、作用以及我们在面试中可能会遇到的相关问题。 一、static关键字的使用 1.1 类和方法 在Java中,我们可以使用static修饰一个类,使其变成静态类。静态类可以不需要实例化…

    JavaScript 2023年5月28日
    00
  • javascript 常见的闭包问题的解决办法

    JavaScript 常见的闭包问题及解决办法 在 JavaScript 中,闭包是一个非常重要的概念,它的出现可以使得我们的代码更加健壮和灵活,但是也因为其特殊的作用域和生命周期,会导致一些常见的问题。在本文中,我们将会详细讲解这些问题以及解决办法。 什么是闭包 闭包是指一个函数能够访问其词法作用域外的变量。在 JavaScript 中,每一个函数都是一个…

    JavaScript 2023年6月10日
    00
  • 简单实现js页面切换功能

    当我们需要在网站页面中实现切换效果,通常需要用到 JavaScript 来实现。下面是实现 js 页面切换功能的完整攻略: 第一步:添加 HTML 结构 首先,在需要实现页面切换的 HTML 页面中,需要添加跳转链接以及对应的容器标签。例如,我们想要实现跳转到“首页”和“关于我们”两个页面,则可以添加如下代码: <!DOCTYPE html> &…

    JavaScript 2023年6月11日
    00
  • 基于three.js实现的3D粒子动效实例代码

    基于three.js实现的3D粒子动效实例代码,需要经过以下步骤: 第一步:引入three.js库和实例代码所需的辅助库 <script src="js/three.min.js"></script> <script src="js/Stats.min.js"></script…

    JavaScript 2023年6月10日
    00
  • JavaScript实现继承的4种方法总结

    JavaScript实现继承的4种方法总结 在JavaScript中实现继承有多种方法,常见的有原型链继承、借用构造函数继承、组合继承和寄生组合式继承。下面会一一介绍这些方法。 1. 原型链继承 原型链继承是JavaScript中最常见的继承方式,它的实现方式非常简单。我们可以通过将子类(派生类)的原型对象(prototype)设置为父类(基类)的实例对象,…

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