今天所学心得、笔记

1、jQuery实战,购物车,全选,全不选,计算总价

示例截图

示例代码(只展示了script部分)

  1. <script>
  2. // 1. 获取全选复选框,所有独立商品的复选框
  3. const checkAll = $("#check-all");
  4. const checkItems = $("[name=item]");
  5. // 1.1 点击全选,全不选, 改变商品复选框
  6. checkAll.change(function () {
  7. checkItems.prop("checked", $(this).prop("checked"));
  8. // 调用,自动计算函数
  9. autoCalculate();
  10. });
  11. // 1.2 点击商品复选框,改变全选,全不选
  12. checkItems.change(function () {
  13. // 方法1,比较checked数量与商品数量
  14. checkAll.prop("checked", $("[name=item]:checked").length == $("[name=item]").length);
  15. // 方法2,使用原生数组方法,Array.every()(逻辑‘或’,有一个真就为true),Array.some()(逻辑‘与’,全为真就为true)
  16. // 先使用$(checkItems)将JQ对象变原生,再使用[...原生对象]变数组,再使用every()方法
  17. // checkAll.prop("checked", [...$(checkItems)].every(item=>item.checked));
  18. // console.log([...$(checkItems)].every(item=>item.checked));
  19. // 调用,自动计算函数
  20. autoCalculate();
  21. });
  22. // 2. 计算商品总数量,金额合计、总计
  23. // 2.1 获取所有的数量控件
  24. const numInput = $('tbody input[type=number]');
  25. numInput.change(function () {
  26. autoCalculate();
  27. });
  28. // 3. 页面加载完成,调用,自动计算函数
  29. window.load = autoCalculate();
  30. // 2.2 封装自动计算函数
  31. function autoCalculate() {
  32. // 获取商品数量的, 数组;
  33. const numbers = $("tbody input[type=number]");
  34. const numArr = [...numbers].map(item => item.value * 1);
  35. // console.log(numArr);
  36. // 获取(被选中)商品数量的, 数组; 计算商品总数
  37. let numChecked = 0;
  38. const numbersChecked = $("[name=item]:checked").parent().siblings().children("input");
  39. // console.log(numbersChecked);
  40. numbersChecked.each((index, item)=> numChecked += item.value * 1);
  41. // console.log(numChecked);
  42. // 获取单价的, 数组
  43. const prices = $("tbody .price");
  44. const priceArr = [...prices].map(item => item.innerText * 1);
  45. // console.log(priceArr);
  46. // 计算每件商品合计金额, 单价 * 数量
  47. const amountArr = [priceArr, numArr].reduce((totalPrice, currNum) => totalPrice.map((item, index) => item * currNum[index]));
  48. // console.log(amountArr);
  49. // 将选中商品总数量,每个商品的合计金额,渲染到页面中
  50. // 选中商品总数量
  51. $("#sum").text(numChecked);
  52. // 每个商品的合计金额-------------注意:这句一定要放到,计算商品总金额之前
  53. $(".amount").each((index, item) => item.textContent = amountArr[index]);
  54. // 计算每件(被选中)商品合计累加的, 总金额
  55. let amountPriceChecked = 0;
  56. const amountPriceArrChecked = $("[name=item]:checked").parent().siblings(".amount");
  57. // console.log(amountPriceArrChecked);
  58. amountPriceArrChecked.each((index, item)=> amountPriceChecked += item.innerText * 1);
  59. // console.log(amountPriceChecked);
  60. // (被选中)商品合计累加的, 总金额,渲染到页面中
  61. $("#total-amount").text(amountPriceChecked);
  62. }
  63. </script>

更多相关文章

  1. 如何在一台计算机上安装多个 JDK 版本
  2. 你有被银行套路过吗?| 一文教你计算真实的年化利率
  3. android开发简单的计算器
  4. Android(安卓)Renderscript计算(一)
  5. 仿淘宝商品详情页面Android
  6. android应用程序--计算器
  7. Android(安卓)3d 球形建模
  8. android使用datepicker计算年龄
  9. Android(安卓)菜商品列表展示

随机推荐

  1. 关于OFBiz的详细介绍
  2. 有关UTF-16的问题及解决方法
  3. 关于结果保存的10篇文章推荐
  4. 布局文件如何使用?总结布局文件实例用法
  5. 关于XMLHTTP对象的详细介绍
  6. 关于xml的作用的详细介绍
  7. 通过XSLT将xml转换为html的代码示例
  8. 带你了解什么是RSS
  9. 关于XML文档类型的详细介绍
  10. 在IE下字符串与XML转换产生BUG的解决方案