博主信息
博文 19
粉丝 0
评论 0
访问量 15449
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
购物车单选计算
newbie
原创
1257人浏览过

购物车单选判断


1.图片效果

2.代码

  1. <script>
  2. // 1. 全选
  3. function checkAll() {
  4. // 1. 全选按钮状态
  5. let status = event.target.checked;
  6. // console.log(status);
  7. // 2. 根据状态动态设置所有商品的状态
  8. let items = document.querySelectorAll(
  9. '.list li input[type="checkbox"]'
  10. );
  11. items.forEach((item) => (item.checked = status));
  12. setTimeout(autoCalculate, 100);
  13. }
  14. // 2. 根据用户选择来动态设置全选状态
  15. function checkItems() {
  16. // 1. 拿到全部商品
  17. let items = document.querySelectorAll(
  18. '.list li input[type="checkbox"]'
  19. );
  20. setTimeout(autoCalculate, 100);
  21. // 2. 判断状态,只有全部被选择,才需要设置全选为true, array.every
  22. let status = [...items].every((item) => item.checked === true);
  23. document.querySelector(".check-all").checked = status;
  24. }
  25. let items = document.querySelectorAll('.list li input[type="checkbox"]');
  26. function getChoice(numArr) {
  27. return numArr.map((num, index) => {
  28. //判断商品是否被选中 选中的话返回正常数组 否则返回0
  29. if (items[index].checked === false) {
  30. return (num = 0);
  31. } else {
  32. return num;
  33. }
  34. });
  35. }
  36. const nums = document.querySelectorAll(".num");
  37. // 1. 计算总数量
  38. function getTotalNum(numArr) {
  39. //将参数传到getChoice函数里面进行判断 再返回值
  40. numArr = getChoice(numArr);
  41. return numArr.reduce((acc, cur) => acc + cur);
  42. }
  43. // 2. 计算每个商品的金额
  44. function getAmount(numArr, priceArr) {
  45. // 金额 = 数量 * 单价
  46. return numArr.map((num, index) => num * priceArr[index]);
  47. }
  48. // 3. 计算总金额
  49. function getTotalAmount(amountArr) {
  50. //将参数传到getChoice函数里面进行判断 再返回值
  51. amountArr = getChoice(amountArr);
  52. return amountArr.reduce((acc, cur) => acc + cur);
  53. }
  54. // 4. 自动计算
  55. function autoCalculate() {
  56. // 商品数量数组
  57. const numArr = [...nums].map((num) => parseInt(num.value));
  58. // 单价数组
  59. const prices = document.querySelectorAll(".price");
  60. const priceArr = [...prices].map((price) =>
  61. parseInt(price.textContent)
  62. );
  63. // 金额数组
  64. const amountArr = getAmount(numArr, priceArr);
  65. // 总数量
  66. console.log(getTotalNum(numArr));
  67. document.querySelector(".total-num").textContent = getTotalNum(numArr);
  68. // 总金额
  69. document.querySelector(".total-amount").textContent =
  70. getTotalAmount(amountArr);
  71. // 为每个商品填充金额
  72. document
  73. .querySelectorAll(".amount")
  74. .forEach((amount, index) => (amount.textContent = amountArr[index]));
  75. }
  76. // 当页面加载的时候自动计算
  77. window.onload = autoCalculate;
  78. // 当数量更新时,自动计算所有数据
  79. nums.forEach((num) => (num.onchange = autoCalculate));
  80. // 作业 : 只计算选中商品的金额,同时更新总数量和总金额
  81. </script>
批改老师:PHPzPHPz

批改状态:合格

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

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

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