
批改狀態(tài):合格
老師批語:
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery購物車全選與不全選</title>
</title>
<link rel="stylesheet" href="style.css" />
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
<table>
<caption>
購物車
</caption>
<thead>
<tr>
<!-- 全選復(fù)選框 -->
<th><input type="checkbox" name="checkAll" id="check-all" checked /><label for="check-all">全選</label>
</th>
<th>圖片</th>
<th>品名</th>
<th>單位</th>
<th>單價/元</th>
<th>數(shù)量</th>
<th>金額/元</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1020" checked />
</td>
<td>
<a href=""><img src="images/p1.jpg" alt="" /></a>
</td>
<td>iPhone 11</td>
<td>臺</td>
<td class="price">4799</td>
<td><input type="number" min="1" value="1" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1020" checked />
</td>
<td>
<a href=""><img src="images/p2.jpg" alt="" /></a>
</td>
<td>小米pro 11</td>
<td>部</td>
<td class="price">3999</td>
<td><input type="number" min="1" value="2" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1030" checked />
</td>
<td>
<a href=""><img src="images/p3.jpg" alt="" /></a>
</td>
<td>MacBook Pro</td>
<td>臺</td>
<td class="price">18999</td>
<td><input type="number" min="1" value="1" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1040" checked />
</td>
<td>
<a href=""><img src="images/p4.jpg" alt="" /></a>
</td>
<td>小米75電視</td>
<td>臺</td>
<td class="price">5999</td>
<td><input type="number" min="1" value="2" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1050" checked />
</td>
<td>
<a href=""><img src="images/p5.jpg" alt="" /></a>
</td>
<td>Canon 90D單反</td>
<td>臺</td>
<td class="price">9699</td>
<td><input type="number" min="1" value="1" /></td>
<td class="amount">xxxx</td>
</tr>
</tbody>
<tfoot>
<tr style="font-weight: bolder; font-size: 1.2em">
<td colspan="5">總計:</td>
<td id="sum">xxxx</td>
<td id="total-amount">xxxx</td>
</tr>
</tfoot>
</table>
<div style="width: 90%; margin: 10px auto">
<button style="float: right; width: 100px">結(jié)算</button>
</div>
<script>
// 1.全選復(fù)選框
const checkAll = $("#check-all");
// 2.獨立復(fù)選框
const checkItems = $("input[name='item']");
// 改變?nèi)x,獨立復(fù)選框也改變
checkAll.change(ev => checkItems.each(function () {
$(this).prop("checked", $(ev.target).is(":checked"));
}))
// 改變獨立復(fù)選框,改變?nèi)x
checkItems.change(() => checkAll.prop("checked", [...checkItems].every(item => item.checked)));
</script>
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>購物車勾選不勾選時自動完成計算</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<table>
<caption>
購物車
</caption>
<thead>
<tr>
<!-- 全選復(fù)選框 -->
<th><input type="checkbox" name="checkAll" id="check-all" checked /><label for="check-all">全選</label>
</th>
<th>圖片</th>
<th>品名</th>
<th>單位</th>
<th>單價/元</th>
<th>數(shù)量</th>
<th>金額/元</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1020" checked />
</td>
<td>
<a href=""><img src="images/p1.jpg" alt="" /></a>
</td>
<td>iPhone 11</td>
<td>臺</td>
<td class="price">4799</td>
<td><input type="number" min="1" value="1" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1020" checked />
</td>
<td>
<a href=""><img src="images/p2.jpg" alt="" /></a>
</td>
<td>小米pro 11</td>
<td>部</td>
<td class="price">3999</td>
<td><input type="number" min="1" value="2" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1030" checked />
</td>
<td>
<a href=""><img src="images/p3.jpg" alt="" /></a>
</td>
<td>MacBook Pro</td>
<td>臺</td>
<td class="price">18999</td>
<td><input type="number" min="1" value="1" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1040" checked />
</td>
<td>
<a href=""><img src="images/p4.jpg" alt="" /></a>
</td>
<td>小米75電視</td>
<td>臺</td>
<td class="price">5999</td>
<td><input type="number" min="1" value="2" /></td>
<td class="amount">xxxx</td>
</tr>
<tr>
<td>
<input type="checkbox" name="item" value="SN-1050" checked />
</td>
<td>
<a href=""><img src="images/p5.jpg" alt="" /></a>
</td>
<td>Canon 90D單反</td>
<td>臺</td>
<td class="price">9699</td>
<td><input type="number" min="1" value="1" /></td>
<td class="amount">xxxx</td>
</tr>
</tbody>
<tfoot>
<tr style="font-weight: bolder; font-size: 1.2em">
<td colspan="5">總計:</td>
<td id="sum">xxxx</td>
<td id="total-amount">xxxx</td>
</tr>
</tfoot>
</table>
<div style="width: 90%; margin: 10px auto">
<button style="float: right; width: 100px">結(jié)算</button>
</div>
<script>
// 全選復(fù)選框
const checkAll = document.getElementById("check-all");
const checkItems = document.getElementsByName("item");
// 改變?nèi)x,獨立復(fù)選框也改變
checkAll.onchange = ev => checkItems.forEach(item => item.checked = ev.target.checked);
// 改變獨立復(fù)選框,改變?nèi)x
checkItems.forEach(item => item.onchange = () => checkAll.checked = [...checkItems].every(ele => ele.checked));
// 購物車,自動計算
function cart() {
// 獨立單價組
let priceArr = [...document.getElementsByClassName("price")].map(p => p.textContent * 1);
// 獨立數(shù)量數(shù)組
let numbersArr = [...document.querySelectorAll("input[type='number']")].map(n => n.value * 1);
// 獨立金額數(shù)組
let aumoutsArr = [priceArr, numbersArr].reduce((total, curr) => total.map((item, i) => item * curr[i]));
// 獨立金額數(shù)據(jù)填充,由單品數(shù)量改變時觸發(fā),與獨立復(fù)選框狀態(tài)無關(guān)
document.querySelectorAll(".amount").forEach((ele, i) => (ele.textContent = aumoutsArr[i]));
// 獲取所有獨立復(fù)選框元素
let items = document.getElementsByName("item");
// 過濾出所有獨立復(fù)選框選中狀態(tài)的數(shù)量數(shù)組
numbersArr = numbersArr.filter((ele, i) => [...items][i].checked);
// 過濾出所有獨立復(fù)選框選中狀態(tài)的金額數(shù)組
aumoutsArr = aumoutsArr.filter((ele, i) => [...items][i].checked);
// 計算總數(shù)量和總金額
let sum = numbersArr.reduce((pre, cur) => pre + cur, 0);
let total = aumoutsArr.reduce((pre, cur) => pre + cur, 0);
// 填充總數(shù)量和總金額到頁面中
document.getElementById("sum").textContent = sum;
document.getElementById("total-amount").textContent = total;
}
// 改變單品數(shù)量時觸發(fā)
document.querySelectorAll("input[type='number']").forEach(ele => ele.onchange = cart);
// 改變獨立復(fù)選框狀態(tài)時觸發(fā)
document.getElementsByName("item").forEach(item => item.onchange = cart);
// 全選狀態(tài)改變時觸發(fā)
document.getElementById("check-all").addEventListener("change", cart);
// 頁面載入完成時加載
window.onload = cart;
</script>
</body>
</html>
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號