博主信息
博文 70
粉丝 4
评论 5
访问量 123932
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
JavaScript: 购物车全选自动计算金额和取消全选清零金额
JiaJieChen
原创
1296人浏览过

JavaScript: 购物车全选自动计算金额和取消全选清零金额

代码块

  1. <script>
  2. //首先完成购物车的全选按钮和单个按钮进行绑定
  3. //拿到全选按钮
  4. let checkAll = document.querySelector("#check-all");
  5. //拿到单个按钮组 单个按钮只有name属性 所以用getElementsByName去拿
  6. let checkItem = document.getElementsByName("item");
  7. //测试是否拿到 已拿到
  8. // console.log(checkAll, checkItem);
  9. //onchange 是属性改变时触发状态
  10. //将当前全选的状态变化赋值给单个按钮
  11. checkAll.onchange = (ev) => {
  12. checkItem.forEach((item) => (item.checked = ev.target.checked));
  13. };
  14. //将单个按钮的状态设置为:全部单个按钮选中则选中全选按钮,如果一个没有选中则取消全选按钮
  15. checkItem.forEach(
  16. (item) =>
  17. (item.onchange = () =>
  18. (checkAll.checked = [...checkItem].every((item) => item.checked)))
  19. );
  20. //设置一个自动计算的功能
  21. //首先拿到物品单价
  22. let itemsMoney = document.querySelectorAll("tbody .price");
  23. // 物品数量
  24. let itemsValue = document.querySelectorAll("input[type=number]");
  25. //用户跟新数量的时候自动计算
  26. // itemsMoney.forEach((input) => (onchange = autoSum));
  27. // window.onload 页面加载完成之后自动计算
  28. // window.onload = autoSum;
  29. //测试是否拿到 已拿到
  30. // console.log(money, itemsValue);
  31. // 设置一个自动计算函数
  32. function autoSum() {
  33. //map 有返回值,forEach没有
  34. //物品单价数组
  35. const itemsMoneys = [...itemsMoney].map(
  36. (money) => money.textContent * 1
  37. );
  38. //物品数量数组
  39. const itemsValues = [...itemsValue].map((value) => value.value * 1);
  40. //物品数量的总数
  41. let itemsSum = itemsValues.reduce((pre, cur) => pre + cur);
  42. //数量*单价 = 金额
  43. let autoArr = [itemsMoneys, itemsValues].reduce((total, curr) =>
  44. total.map((item, index) => item * curr[index])
  45. );
  46. //将计算结果渲染到页面中
  47. //总数量
  48. document.querySelector("#sum").textContent = `${itemsSum}`;
  49. //每个商品金额渲染到页面中
  50. document
  51. .querySelectorAll(".amount")
  52. .forEach((item, index) => (item.textContent = autoArr[index]));
  53. //将总金额渲染到页面中
  54. document.querySelector("#total-amount").textContent = `${autoArr.reduce(
  55. (pre, cur) => pre + cur
  56. )}`;
  57. }
  58. checkItem.forEach(
  59. (item) =>
  60. (item.onchange = () => {
  61. item.checked != false
  62. ? autoSum()
  63. : ((document.querySelector("#total-amount").textContent = 0),
  64. (document.querySelector("#sum").textContent = 0));
  65. })
  66. );
  67. </script>
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学