JavaScript实现简单购物小表格

yizhihongxing

下面是“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日

相关文章

  • HTML+JavaScript实现扫雷小游戏

    项目准备要实现HTML+JavaScript的扫雷小游戏,需要先准备好游戏界面,以及相关的代码和算法。首先,需要绘制游戏地图,并放置相应的地雷。接着,需要通过JavaScript编写游戏逻辑和算法,并在对应的HTML文件中引用相应的JS脚本和CSS样式表,以配置游戏的界面和交互组件。需要注意的是,在引用JS脚本的过程中,应该采用外链方式,而不是直接嵌入到HT…

    JavaScript 2023年5月28日
    00
  • js实现绿白相间竖向网页百叶窗动画切换效果

    下面我来详细讲解一下实现“js实现绿白相间竖向网页百叶窗动画切换效果”的攻略。具体步骤如下: 1. 准备工作 首先,确认网页的布局是竖向的,可以使用display: flex或display: grid等CSS属性进行设置。然后,需要在网页中添加一些元素,例如div或section,作为每个百叶窗的容器。 <section class="bl…

    JavaScript 2023年6月11日
    00
  • document.getElementById的一些细节

    当我们在JavaScript中使用DOM操作时,document.getElementById方法是最基本且常用的方法之一,主要用于通过元素的ID获取该元素对象。 下面是一些document.getElementById的细节: 获取不存在的ID时返回null 当我们使用document.getElementById获取ID并且此ID不存在的时候,该方法会返…

    JavaScript 2023年6月10日
    00
  • javascript中parentNode,childNodes,children的应用详解

    Javascript中parentNode, childNodes, children的应用详解 在Javascript中,parentNode, childNodes和children都是DOM Node对象中的属性或方法,用于操作和访问HTML文档中的元素节点。 parentNode parentNode 是通过访问节点的父节点来获取该节点的方法。 在H…

    JavaScript 2023年6月10日
    00
  • 深入浅析JavaScript中数据共享和数据传递

    深入浅析JavaScript中数据共享和数据传递 在JavaScript中,数据共享和数据传递是非常常见的场景,本文将会深入剖析其中的原理和使用方法,并提供实例说明。 数据共享 数据共享可以理解为多个变量指向同一个内存空间,它们共享同一份数据。在JS中,对象和数组是引用类型,它们在进行传递和复制时都是数据共享的。 示例:数组数据共享 let a = [1, …

    JavaScript 2023年5月27日
    00
  • JS实现获取毫秒值及转换成年月日时分秒的方法

    获取毫秒值及转换成年月日时分秒是JavaScript开发中的基础操作,以下是获取毫秒值及转换成年月日时分秒的完整攻略。 获取毫秒值 获取当前时间距离1970年1月1日0时0分0秒(UTC)的毫秒数,可以使用JavaScript中的Date.now()方法,它会返回当前时间的毫秒值,示例如下: const currentTime = Date.now(); c…

    JavaScript 2023年5月27日
    00
  • Javascript和Java获取各种form表单信息的简单实例

    下面是我对“Javascript和Java获取各种form表单信息的简单实例”的攻略: 简介 在web开发中,表单是经常使用的元素之一,通常在提交表单之前需要获取表单中用户输入的信息进行验证或者提交。Javascript和Java都可以很方便地获取表单中的信息。 获取表单信息的方式 Javascript获取表单信息 Javascript获取表单信息可以通过D…

    JavaScript 2023年6月10日
    00
  • 详解js运算符单竖杠“|”与“||”的用法和作用介绍

    详解js运算符单竖杠“|”与“||”的用法和作用介绍 在JavaScript中,有时候我们需要对变量或表达式进行逻辑运算。这就需要运算符和操作数的使用。在这里,我们将讲解两个常用的逻辑运算符:单竖杠“|”和“||”。 单竖杠“|”运算符 单竖杠“|”用于进行位运算。当运算符左右两侧的值都是整数时,它将对它们进行按位或运算。按位或运算将二进制中每一位进行比较,…

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