博客列表 >双色球抽奖、选项卡、购物车(实现不勾选商品不计算价格)

双色球抽奖、选项卡、购物车(实现不勾选商品不计算价格)

Time
Time原创
2022年04月10日 21:40:19741浏览

双色球

动画:

双色球

相关代码:

  1. <div class="box"></div>
  2. <button onclick="shuaxin()" style="margin-top: 10px">抽奖</button>
  3. <script>
  4. function shuaxin() {
  5. //放红球
  6. let arr = [];
  7. //放全部
  8. let res = [];
  9. for (let i = 1; i <= 33; i++) {
  10. arr.push(i);
  11. }
  12. for (let i = 0; i < 6; i++) {
  13. let index = Math.floor(Math.random() * arr.length);
  14. res.push(arr[index]);
  15. arr.splice(index, 1);
  16. }
  17. //排序
  18. res.sort((a, b) => a - b);
  19. //生成蓝色球随机数
  20. let blue = Math.floor(Math.random() * 16) + 1;
  21. res.push(blue);
  22. let box = document.querySelector(".box");
  23. let box_content = box.children.length;
  24. if (box_content !== 0) {
  25. box.innerHTML = "";
  26. }
  27. res.forEach((item) => {
  28. let ball = document.createElement("div");
  29. ball.textContent = item;
  30. box.append(ball);
  31. });
  32. }
  33. window.onload = shuaxin;
  34. </script>

选项卡

动画:

选项卡

相关代码:

  1. <script>
  2. function show() {
  3. let ul = event.currentTarget;
  4. let li = event.target;
  5. [...ul.children].forEach((item) => item.classList.remove("active"));
  6. li.classList.add("active");
  7. let content = document.querySelectorAll(".content");
  8. content.forEach((item) => item.classList.remove("active"));
  9. [...content]
  10. .find((item) => item.dataset.index === li.dataset.index)
  11. .classList.add("active");
  12. }
  13. </script>

购物车

动画:

购物车

相关代码:

  1. <script>
  2. function checkAll() {
  3. //全选按钮状态
  4. let status = event.target.checked;
  5. //子商品状态
  6. document
  7. .querySelectorAll(".list li input[type='checkbox']")
  8. .forEach((item) => (item.checked = status));
  9. autoCalculate();
  10. }
  11. function checkItems() {
  12. //全部商品
  13. let items = document.querySelectorAll(
  14. ".list li input[type='checkbox']"
  15. );
  16. //判断状态
  17. let status = [...items].every((item) => item.checked === true);
  18. document.querySelector(".check-all").checked = status;
  19. autoCalculate();
  20. }
  21. const nums = document.querySelectorAll(".num");
  22. //商品是否被选中
  23. function goodStatus(numArr) {
  24. let items = document.querySelectorAll(
  25. ".list li input[type='checkbox']"
  26. );
  27. return numArr.map((num, index) => {
  28. if (items[index].checked === false) {
  29. return (num = 0);
  30. } else {
  31. return num;
  32. }
  33. });
  34. }
  35. //计算总数量
  36. function getTotalNum(numArr) {
  37. numArr = goodStatus(numArr);
  38. return numArr.reduce((acc, cur) => acc + cur);
  39. }
  40. //计算每个商品金额
  41. function getAmount(numArr, priceArr) {
  42. return numArr.map((num, index) => num * priceArr[index]);
  43. }
  44. //总金额
  45. function getTotalAmount(amountArr) {
  46. amountArr = goodStatus(amountArr);
  47. return amountArr.reduce((acc, cur) => acc + cur);
  48. }
  49. //自动计算
  50. function autoCalculate() {
  51. //数量数组
  52. const numArr = [...nums].map((num) => parseInt(num.value));
  53. //单价数组
  54. const prices = document.querySelectorAll(".price");
  55. const pricesArr = [...prices].map((price) =>
  56. parseInt(price.textContent)
  57. );
  58. //金额数组
  59. const amountArr = getAmount(numArr, pricesArr);
  60. document.querySelector(".total-num").textContent = getTotalNum(numArr);
  61. document.querySelector(".total-amount").textContent =
  62. getTotalAmount(amountArr);
  63. //为每个商品填充金额
  64. document
  65. .querySelectorAll(".amount")
  66. .forEach((amount, index) => (amount.textContent = amountArr[index]));
  67. }
  68. //自动加载
  69. window.onload = autoCalculate();
  70. //数量变化自动计算
  71. [...nums].forEach((num) => (num.onchange = autoCalculate));
  72. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议