购物车单选判断


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>

更多相关文章

  1. 购物车实例演示
  2. Android中SensorManager.getRotationMatrix函数:计算出旋转矩阵,
  3. js编程学习之实战购物车
  4. 计算-金额
  5. 双色球抽奖、选项卡、购物车(实现不勾选商品不计算价格)
  6. 选择器权重,伪类选择器计算
  7. 购物车(计算选中商品)
  8. Android(安卓)Studio长方体表面积计算器(双Activity)
  9. Android计算地图上两点距离

随机推荐

  1. android的一些属性
  2. 【iOS-Android开发对比】之 数据存储
  3. Android中的横竖屏、资源、国际化的使用
  4. [置顶] Android开机铃声教程,所有Rom,不论C
  5. android新手入门FAQ
  6. Android(安卓)Studio和Gradle使用不同位
  7. android自学第二天 Android API Guide学
  8. delphi XE开发微信支付Android获取手机存
  9. android基础知识12:android自动化测试03—
  10. Android自定义视图二:如何绘制内容