
批改狀態(tài):合格
老師批語:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>購物車-2</title>
<link rel="stylesheet" href="css/demo3.css">
</head>
<body>
<div class="box">
<!-- 全選框 -->
<div class="selectAll">
<input type="checkbox" class="check-all" name="check-all" onchange="checkAll()" checked>
<label for="check-all">全選</label>
</div>
<!-- 商品列表 -->
<ul class="list">
<li>
<span>選擇</span>
<span>品名</span>
<span>數(shù)量</span>
<span>單價</span>
<span>金額</span>
</li>
<li>
<input type="checkbox" onchange="checkItems()" checked>
<span class="content">吹風機</span>
<input type="number" value="1" min="1" class="num">
<span class="price">100</span>
<span class="amount">0</span>
</li>
<li>
<input type="checkbox" onchange="checkItems()" checked>
<span class="content">電腦</span>
<input type="number" value="2" min="1" class="num">
<span class="price">2000</span>
<span class="amount">0</span>
</li>
<li>
<input type="checkbox" onchange="checkItems()" checked>
<span class="content">相機</span>
<input type="number" value="3" min="1" class="num">
<span class="price">1500</span>
<span class="amount">0</span>
</li>
<li>
<span>總計:</span>
<span class="total-num">0</span>
<span class="total-amount">0</span>
</li>
</ul>
<button class="account">結(jié)算</button>
</div>
<script>
//全選
function checkAll() {
let status=event.target.checked;
console.log(status);
//子商品狀態(tài)
document
.querySelectorAll(".list li input[type='checkbox']")
.forEach((item)=>(item.checked=status));
autoCalculate();
}
function checkItems() {
//全部商品
let items = document.querySelectorAll(".list li input[type='checkbox']");
//判斷狀態(tài)
let status=[...items].every((item)=>item.checked===true);
console.log(status);
document.querySelector('.check-all').checked=status;
autoCalculate();
}
const nums=document.querySelectorAll('.num');
// console.log(nums);
//商品是否被選中
function goodStatus(numArr){
let items =document.querySelectorAll(".list li input[type='checkbox']");
return numArr.map((num,index)=>{
if (items[index].checked===false){
return (num=0);
} else {
return num;
}
});
}
//計算總數(shù)量
function getTotalNum(numArr) {
numArr=goodStatus(numArr);
return numArr.reduce((acc, cur)=>acc+cur);
}
//計算每個商品金額
function getAmount(numArr,priceArr){
return numArr.map((num,index)=>num*priceArr[index]);
}
//總金額
function getTotalAmount(amountArr){
amountArr=goodStatus(amountArr);
return amountArr.reduce((acc,cur)=>acc+cur);
}
//自動計算
function autoCalculate() {
//數(shù)量數(shù)組
const numArr=[...nums].map((num)=>parseInt(num.value));
//單價數(shù)組
const prices=document.querySelectorAll('.price');
const pricesArr=[...prices].map((price)=>parseInt(price.textContent));
//金額數(shù)組
const amountArr =getAmount(numArr,pricesArr);
document.querySelector('.total-num').textContent = getTotalNum(numArr);
document.querySelector('.total-amount').textContent =
getTotalAmount(amountArr);
//為每個商品填充金額
document
.querySelectorAll('.amount')
.forEach((amount, index) => (amount.textContent = amountArr[index]));
}
//自動加載
window.onload = autoCalculate();
//數(shù)量變化自動計算
[...nums].forEach((num) => (num.onchange = autoCalculate));
</script>
</body>
</html>
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號