批改状态:合格
老师批语:
这是课后作业,完整代码太长了,所以只贴作业实现部分。
HTML 代码:
<body><div class="container"><!-- 1. 图片组 --><div class="img-group"></div><!-- 2. 和图片数量对应的小按钮 --><div class="btn-group"></div><!-- 3. 向前和向后的翻页按钮 --><div class="skip"><a class="prev" href="" onclick="prevImg(event)"><</a><a class="next" href="" onclick="nextImg(event)">></a></div></div></body>
JS 代码:
window.onload = () => {// 1. 生成所有图片createImgs(imgGroup, banners.length);// 2. 生成与图片对应的小按钮createBtns(btnGroup, banners.length);//作业 :每2秒自动切换,使用 setInterval + 事件派发器完成//******作业开始******let id = autoPlay();//鼠标移入图片区时停止播放document.querySelector(".container").onmouseover = () => {clearInterval(id);};//鼠标移出图片区时重新自动播放document.querySelector(".container").onmouseout = () => {id = autoPlay();};};//自动播放函数function autoPlay() {return setInterval(() => {const a = document.querySelector(".next");a.addEventListener("autoEvent", nextImg);a.dispatchEvent(new Event("autoEvent"));a.removeEventListener("autoEvent", nextImg);}, 2000);}//******作业结束******
// 作业 : 当选择某个商品或去掉某个商品时, 能自动计算//******作业开始 1******//给所有checkbox添加监听事件,点击时能自动重新计算checkAll.addEventListener("change", autoCalculate);checkItems.forEach(function (item) {item.addEventListener("change", autoCalculate);});//******作业结束 1******function autoCalculate() {// 1. 获取每个商品的金额: 数量 * 单价const numbers = document.querySelectorAll('input[type="number"]');const numArr = [...numbers].map(function (num) {return num.value * 1;});const prices = document.querySelectorAll("tbody .price");const priceArr = [...prices].map(function (num) {return num.textContent * 1;});// 2. 计算出每个商品的金额(数组)const amountArr = [priceArr, numArr].reduce(function (prev, curr) {return prev.map(function (item, key) {return item * curr[key];});});//******作业开始 2******// 改造autoCalculate自动计算函数中总金额和总数量的计算过程://因为reduce的index是从1开始,循环次数是n-1次,//所以需要单独处理一下checkItems[0]是否选中的情况// 3. 总金额// let total = amountArr.reduce(function (prev, curr) {// return prev + curr;// });let total = amountArr.reduce(function (prev, curr, index) {if (index == 1) {if (!checkItems[0].checked) prev = 0;}if (checkItems[index].checked) {return prev + curr;} else {return prev;}});// 4. 总数量// let sum = numArr.reduce(function (prev, curr) {// return prev + curr;// });let sum = numArr.reduce(function (prev, curr, index) {if (index == 1) {if (!checkItems[0].checked) prev = 0;}if (checkItems[index].checked) {return prev + curr;} else {return prev;}});//******作业结束 2******// 5. 将所有数据渲染到页面中document.querySelectorAll(".amount").forEach(function (item, index) {item.textContent = amountArr[index];});document.querySelector("#total-amount").textContent = total;document.querySelector("#sum").textContent = sum;}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号