博主信息
博文 46
粉丝 0
评论 0
访问量 47522
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
购物车实例演示
上草一方
原创
590人浏览过

代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>购物车-2</title>
  8. <link rel="stylesheet" href="css/demo3.css">
  9. </head>
  10. <body>
  11. <div class="box">
  12. <!-- 全选框 -->
  13. <div class="selectAll">
  14. <input type="checkbox" class="check-all" name="check-all" onchange="checkAll()" checked>
  15. <label for="check-all">全选</label>
  16. </div>
  17. <!-- 商品列表 -->
  18. <ul class="list">
  19. <li>
  20. <span>选择</span>
  21. <span>品名</span>
  22. <span>数量</span>
  23. <span>单价</span>
  24. <span>金额</span>
  25. </li>
  26. <li>
  27. <input type="checkbox" onchange="checkItems()" checked>
  28. <span class="content">吹风机</span>
  29. <input type="number" value="1" min="1" class="num">
  30. <span class="price">100</span>
  31. <span class="amount">0</span>
  32. </li>
  33. <li>
  34. <input type="checkbox" onchange="checkItems()" checked>
  35. <span class="content">电脑</span>
  36. <input type="number" value="2" min="1" class="num">
  37. <span class="price">2000</span>
  38. <span class="amount">0</span>
  39. </li>
  40. <li>
  41. <input type="checkbox" onchange="checkItems()" checked>
  42. <span class="content">相机</span>
  43. <input type="number" value="3" min="1" class="num">
  44. <span class="price">1500</span>
  45. <span class="amount">0</span>
  46. </li>
  47. <li>
  48. <span>总计:</span>
  49. <span class="total-num">0</span>
  50. <span class="total-amount">0</span>
  51. </li>
  52. </ul>
  53. <button class="account">结算</button>
  54. </div>
  55. <script>
  56. //全选
  57. function checkAll() {
  58. let status=event.target.checked;
  59. console.log(status);
  60. //子商品状态
  61. document
  62. .querySelectorAll(".list li input[type='checkbox']")
  63. .forEach((item)=>(item.checked=status));
  64. autoCalculate();
  65. }
  66. function checkItems() {
  67. //全部商品
  68. let items = document.querySelectorAll(".list li input[type='checkbox']");
  69. //判断状态
  70. let status=[...items].every((item)=>item.checked===true);
  71. console.log(status);
  72. document.querySelector('.check-all').checked=status;
  73. autoCalculate();
  74. }
  75. const nums=document.querySelectorAll('.num');
  76. // console.log(nums);
  77. //商品是否被选中
  78. function goodStatus(numArr){
  79. let items =document.querySelectorAll(".list li input[type='checkbox']");
  80. return numArr.map((num,index)=>{
  81. if (items[index].checked===false){
  82. return (num=0);
  83. } else {
  84. return num;
  85. }
  86. });
  87. }
  88. //计算总数量
  89. function getTotalNum(numArr) {
  90. numArr=goodStatus(numArr);
  91. return numArr.reduce((acc, cur)=>acc+cur);
  92. }
  93. //计算每个商品金额
  94. function getAmount(numArr,priceArr){
  95. return numArr.map((num,index)=>num*priceArr[index]);
  96. }
  97. //总金额
  98. function getTotalAmount(amountArr){
  99. amountArr=goodStatus(amountArr);
  100. return amountArr.reduce((acc,cur)=>acc+cur);
  101. }
  102. //自动计算
  103. function autoCalculate() {
  104. //数量数组
  105. const numArr=[...nums].map((num)=>parseInt(num.value));
  106. //单价数组
  107. const prices=document.querySelectorAll('.price');
  108. const pricesArr=[...prices].map((price)=>parseInt(price.textContent));
  109. //金额数组
  110. const amountArr =getAmount(numArr,pricesArr);
  111. document.querySelector('.total-num').textContent = getTotalNum(numArr);
  112. document.querySelector('.total-amount').textContent =
  113. getTotalAmount(amountArr);
  114. //为每个商品填充金额
  115. document
  116. .querySelectorAll('.amount')
  117. .forEach((amount, index) => (amount.textContent = amountArr[index]));
  118. }
  119. //自动加载
  120. window.onload = autoCalculate();
  121. //数量变化自动计算
  122. [...nums].forEach((num) => (num.onchange = autoCalculate));
  123. </script>
  124. </body>
  125. </html>

效果:


批改老师: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+教程免费学