加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
index.js 3.24 KB
一键复制 编辑 原始数据 按行查看 历史
juangoubq 提交于 2024-04-19 22:34 . 前端代码
window.onload = function () {
// 获取所需的 DOM 元素
const btn = document.querySelector(".s_ck_all");
const buttons = document.querySelectorAll(".s_ck");
const del = document.querySelector(".del-all");
var totalPrice = document.getElementById("totalPrice");
var totalCount = document.getElementById("totalCount");
var carBody = document.getElementById("carBody");
var tr = carBody.getElementsByTagName("tr");
const clear = document.querySelector(".clear");
// 第一步 设置全选
btn.onclick = function () {
for (let button of buttons) {
button.checked = btn.checked;
}
getTotal();
};
// 第二步 设置选中删除
del.onclick = function () {
const selectedItems = Array.from(buttons).filter((button) => button.checked);
if (selectedItems.length === 0) {
alert("请选择要删除的商品");
} else {
selectedItems.forEach((button) => {
button.closest("tr").remove();
});
getTotal();
}
};
// 数量加减、删除
for (let item of tr) {
item.addEventListener("click", (e) => {
const target = e.target;
if (target.classList.contains("add")) {
increaseQuantity(target);
} else if (target.classList.contains("reduce")) {
decreaseQuantity(target);
} else if (target.classList.contains("del")) {
deleteItem(target);
}
getTotal();
});
}
// 增加数量
function increaseQuantity(element) {
const input = element.previousElementSibling;
input.value = parseInt(input.value) + 1;
}
// 减少数量
function decreaseQuantity(element) {
const input = element.nextElementSibling;
const newValue = parseInt(input.value) - 1;
input.value = newValue < 1 ? 1 : newValue;
}
// 删除商品
function deleteItem(element) {
element.closest("tr").remove();
}
// 合计、已选商品件数
function getTotal() {
let price = 0;
let count = 0;
for (let item of tr) {
const checkbox = item.querySelector("input[type='checkbox']");
if (checkbox.checked) {
const priceCell = item.querySelector("td:nth-child(3)"); //获取单价
const quantityInput = item.querySelector("input[type='text']");
const totalCell = item.querySelector("td:nth-child(5)");
const unitPrice = parseFloat(priceCell.innerText);
const quantity = parseInt(quantityInput.value);
const itemTotal = unitPrice * quantity;
totalCell.innerText = itemTotal.toFixed(2); //更新商品行的总计和统计变量
price += itemTotal;
count += quantity;
}
}
totalPrice.innerText = price.toFixed(2);
totalCount.innerText = count;
}
// 清空购物车
clear.onclick = function () {
carBody.innerHTML = "";
getTotal();
};
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化