亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 19
粉絲 0
評論 0
訪問量 17606
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
JS實(shí)戰(zhàn)(自動輪播圖+購物車自動計(jì)算)
王浩
原創(chuàng)
713人瀏覽過
  1. 作業(yè)內(nèi)容:
  2. 1. 給輪播圖加上自動播放功能;
  3. 2. 給購物車加上選擇時(shí)自動計(jì)算功能;
  4. 3. 復(fù)習(xí)之前的課程,找到短板,整理筆記;
  5. 4. 預(yù)習(xí)PHP知識,為節(jié)后新課做準(zhǔn)備.

1. 給輪播圖加上自動播放功能

具體生效代碼如下:

  1. // 定時(shí)翻頁
  2. setInterval(() => {
  3. document.querySelector(".next").dispatchEvent(new Event("click"));
  4. }, 2000);

完整代碼經(jīng)過修正,也貼上:

  1. const banners = [
  2. "images/banner_1.jpg",
  3. "images/banner_2.jpg",
  4. "images/banner_3.jpg",
  5. "images/banner_4.jpg",
  6. ];
  7. const imgGroup = document.querySelector(".container>.img-group");
  8. const btnGroup = document.querySelector(".container>.btn-group");
  9. //頁面加載完,生成圖片和按鈕
  10. window.onload = () => {
  11. // 生成所有圖片
  12. createImgs(imgGroup, banners.length);
  13. // 生成與圖片對應(yīng)大小的銨鈕
  14. createBtns(btnGroup, banners.length);
  15. };
  16. // 生成所有圖片
  17. function createImgs(p, len) {
  18. const frag = document.createDocumentFragment();
  19. for (let i = 0; i < len; i++) {
  20. // 創(chuàng)建圖片元素
  21. const img = document.createElement("img");
  22. img.src = banners[i];
  23. img.dataset.index = i + 1;
  24. // 給第一張圖片加上active樣式
  25. if (i === 0) img.classList.add("active");
  26. frag.append(img);
  27. }
  28. p.append(frag);
  29. }
  30. // 生成與圖片對應(yīng)大小的銨鈕
  31. function createBtns(p, len) {
  32. const frag = document.createDocumentFragment();
  33. for (let i = 0; i < len; i++) {
  34. const btn = document.createElement("span");
  35. btn.dataset.index = i + 1;
  36. // 給第一個(gè)按鈕增加active樣式
  37. if (i === 0) btn.classList.add("active");
  38. // 為按鈕添加onclick事件
  39. btn.onclick = showImgs;
  40. frag.append(btn);
  41. }
  42. p.append(frag);
  43. }
  44. // 按鈕事件
  45. function showImgs(ev) {
  46. const index = ev.target.dataset.index;
  47. [...imgGroup.children].forEach((item) => item.classList.remove("active"));
  48. [...btnGroup.children].forEach((item) => item.classList.remove("active"));
  49. ev.target.classList.add("active");
  50. [...imgGroup.children].filter((item) => item.dataset.index === index)[0].classList.add("active");
  51. }
  52. // 翻頁,向前-1,向后1
  53. function nextImg(ev, direction) {
  54. ev.preventDefault();
  55. let index = imgGroup.querySelector(".active").dataset.index;
  56. let count = banners.length;
  57. direction > 0 ? ++index : --index;
  58. index === 0 ? (index = count) : index;
  59. index > count ? (index = 1) : index;
  60. [...imgGroup.children].forEach((item) => item.classList.remove("active"));
  61. [...btnGroup.children].forEach((item) => item.classList.remove("active"));
  62. [...imgGroup.children]
  63. .filter((item) => item.dataset.index === index.toString())[0]
  64. .classList.add("active");
  65. [...btnGroup.children]
  66. .filter((item) => item.dataset.index === index.toString())[0]
  67. .classList.add("active");
  68. }
  69. // 定時(shí)翻頁
  70. setInterval(() => {
  71. document.querySelector(".next").dispatchEvent(new Event("click"));
  72. }, 2000);

2. 給購物車加上選擇時(shí)自動計(jì)算功能;

  1. // 三句代碼實(shí)現(xiàn):當(dāng)選擇某個(gè)商品或去掉某個(gè)商品時(shí), 能自動計(jì)算
  2. // 第一句在checkAll.onchange里加上一個(gè)autoCalculate(),即下面代碼第11行
  3. // 第二句在checkItems.onchange里加上一個(gè)autoCalculate(),即下面代碼第16行
  4. // 最后一句在計(jì)算的函數(shù)里,添加一條判斷語句,即下面代碼第37行。判斷前面的check如果沒勾上,就不納入計(jì)算
  1. // 全選復(fù)選框
  2. const checkAll = document.querySelector("#check-all");
  3. const checkItems = document.getElementsByName("item");
  4. // change: 當(dāng)控件中的值發(fā)生變化時(shí)觸發(fā)
  5. // 將全選按鈕的狀態(tài),賦值給下面所有的商品的checkbox
  6. checkAll.onchange = function (ev) {
  7. checkItems.forEach(function (item) {
  8. item.checked = ev.target.checked;
  9. });
  10. autoCalculate();
  11. };
  12. checkItems.forEach(function (item) {
  13. item.onchange = function (ev) {
  14. autoCalculate();
  15. //只有全部選中才更新全選按鈕的狀態(tài)
  16. checkAll.checked = [...checkItems].every(function (item) {
  17. return item.checked;
  18. });
  19. };
  20. });
  21. // 自動計(jì)算
  22. // 所有的計(jì)算,都是基于數(shù)量的變化
  23. const numInput = document.querySelectorAll('input[type="number"]');
  24. numInput.forEach(function (input) {
  25. input.onchange = autoCalculate;
  26. });
  27. function autoCalculate() {
  28. // 1. 獲取每個(gè)商品的金額: 數(shù)量 * 單價(jià)
  29. const numbers = document.querySelectorAll('input[type="number"]');
  30. const numArr = [...numbers].map(function (num) {
  31. if (!num.parentNode.parentNode.getElementsByClassName("item")[0].checked) return 0;
  32. return num.value * 1;
  33. });
  34. const prices = document.querySelectorAll("tbody .price");
  35. const priceArr = [...prices].map(function (num) {
  36. return num.textContent * 1;
  37. });
  38. // 2. 計(jì)算出每個(gè)商品的金額(數(shù)組)
  39. const amountArr = [priceArr, numArr].reduce(function (prev, curr) {
  40. return prev.map(function (item, key) {
  41. return item * curr[key];
  42. });
  43. });
  44. // console.log(amountArr);
  45. // 3. 總金額
  46. let total = amountArr.reduce(function (prev, curr) {
  47. return prev + curr;
  48. });
  49. // 4. 總數(shù)量
  50. let sum = numArr.reduce(function (prev, curr) {
  51. return prev + curr;
  52. });
  53. // 5. 將所有數(shù)據(jù)渲染到頁面中
  54. document.querySelectorAll(".amount").forEach(function (item, index) {
  55. item.textContent = amountArr[index];
  56. });
  57. document.querySelector("#total-amount").textContent = total;
  58. document.querySelector("#sum").textContent = sum;
  59. }
  60. window.onload = autoCalculate;
  61. // 作業(yè) : 當(dāng)選擇某個(gè)商品或去掉某個(gè)商品時(shí), 能自動計(jì)算

3. 預(yù)習(xí)和復(fù)習(xí)相關(guān)部分已經(jīng)在陸續(xù)進(jìn)行

批改老師:PHPzPHPz

批改狀態(tài):合格

老師批語:
本博文版權(quán)歸博主所有,轉(zhuǎn)載請注明地址!如有侵權(quán)、違法,請聯(lián)系admin@php.cn舉報(bào)處理!
全部評論 文明上網(wǎng)理性發(fā)言,請遵守新聞評論服務(wù)協(xié)議
0條評論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)