function calcTotal() { let totalPrice = 0; $('input[name="item_ids"]:checked').each(function () { let price = parseFloat($(this).closest('tr').find('td:eq(2)').text()); let quantity = parseInt($(this).closest('tr').find('input[name="item_quantities"]').val()); console.log(price) console.log(quantity) let mini_total_price = price * quantity; console.log(mini_total_price); totalPrice += price * quantity; }); $('#totalPrice').text(totalPrice.toFixed(2)); }
时间: 2024-04-28 13:23:26 浏览: 133
这是一个JavaScript函数,用于计算购物车中所有已选择商品的总价。该函数使用了jQuery库来简化DOM操作。具体的实现流程如下:
1. 定义一个变量`totalPrice`,用于存储所有已选择商品的总价。
2. 使用jQuery选择器`$('input[name="item_ids"]:checked')`来获取所有已选择的商品条目。这里假设每个商品条目都包含一个名为`item_ids`的复选框。
3. 使用`each()`方法遍历所有已选择的商品条目。在每次迭代中,使用`closest()`方法找到最近的包含`<tr>`标签的父元素,再使用`find()`方法找到该元素中第3个`<td>`标签(即商品单价所在的单元格)和第4个`<td>`标签中的`<input>`标签(即商品数量输入框),分别获取它们的值。
4. 将商品单价和商品数量相乘,得到该商品的小计价格。
5. 将该商品的小计价格加到`totalPrice`变量中。
6. 最后,将`totalPrice`变量的值设置为HTML元素`#totalPrice`的文本内容,以显示总价。这里使用了`toFixed(2)`方法来保留小数点后两位。
需要注意的是,该函数的实现假设每个商品条目都包含一列复选框、一列商品名称、一列商品单价、一列商品数量输入框、一列小计价格和一列删除按钮。如果模板中的HTML结构不同,那么需要相应地修改该函数的实现。
相关问题
function updatePrice() { let items = document.querySelectorAll('.item'); let totalNum = 0; let totalPrice = 0; items.forEach(function(item) { if (item.querySelector('.item_checkbox').checked) { let num = item.querySelector('.num').value; totalNum = totalNum + parseInt(num); let price = item.querySelector('.price_2').getAttribute('data-price'); totalPrice = totalPrice + parseFloat(price) * num; } }); document.querySelector('.checked_num').innerText = totalNum; document.querySelector('.total_price').innerText = totalPrice; } window.onload = function() { let itemCheckboxes = document.querySelectorAll('.item_checkbox'); itemCheckboxes.forEach(function (itemCheckbox) { itemCheckbox.onchange = function() { updatePrice(); } }); }
这段代码的功能是更新购物车中选中商品的数量和总价,并且在页面中展示出来。具体实现方法如下:
1. 获取所有商品的节点元素,并使用forEach方法进行遍历。
2. 判断当前商品的复选框是否被选中,如果选中了则获取商品数量和单价,并计算出总数量和总价。
3. 将计算出的总数量和总价分别设置到页面中对应的元素上。
4. 在页面加载完成后获取所有商品复选框的节点元素,并为每个复选框的onchange事件绑定updatePrice函数,即当复选框状态改变时更新购物车信息。
总的来说,这段代码实现了购物车中商品数量和总价的实时更新,提高了用户体验。
逐行解释这段代码:$(".add-to-cart-btn").click(function() { var itemId = $(this).data("id"); var itemName = $(this).data("name"); var itemPrice = $(this).data("price"); $.ajax({ type: "POST", url: "add-to-cart.php", data: { id: itemId, name: itemName, price: itemPrice } }).done(function(response) { alert(response); }); }); session_start(); $itemId = $_POST["id"]; $itemName = $_POST["name"]; $itemPrice = $_POST["price"]; if (!isset($_SESSION["cart"])) { $_SESSION["cart"] = array(); } array_push($_SESSION["cart"], array("id", $itemId, "name", $itemName, "price", $itemPrice)); echo "添加商品成功!"; $(document).on("click", ".remove-item-btn", function() { var itemId = $(this).data("id"); $.ajax({ type: "POST", url: "remove-from-cart.php", data: { id: itemId } }).done(function(response) { location.reload(); }); }); session_start(); $itemId = $_POST["id"]; foreach ($_SESSION["cart"] as $key => $item) { if ($item["id"] == $itemId) { unset($_SESSION["cart"][$key]); } } echo "删除商品成功!"; $(".checkout-btn").click(function() { var selectedItems = $(".cart-item:checked"); var totalPrice = 0; selectedItems.each(function() { var itemPrice = $(this).parents(".cart-item-row").find(".item-price").text(); var itemQty = $(this).parents(".cart-item-row").find(".item-qty").val(); var subTotal = itemPrice * itemQty; totalPrice += subTotal; }); window.location.href = "checkout.php?id=" + selectedItems.serialize() + "&total=" + totalPrice; }); session_start(); $selectedIds = explode("&", $_GET["id"]); foreach ($selectedIds as $key => $value) { $selectedIds[$key] = substr($value, strpos($value, "=") + 1); } $totalPrice = $_GET["total"];
这段代码包含了一个简单的购物车功能,实现了添加商品、删除商品和结算等功能,具体解释如下:
```
$(".add-to-cart-btn").click(function() {
var itemId = $(this).data("id");
var itemName = $(this).data("name");
var itemPrice = $(this).data("price");
$.ajax({
type: "POST",
url: "add-to-cart.php",
data: { id: itemId, name: itemName, price: itemPrice }
}).done(function(response) {
alert(response);
});
});
```
这段代码监听了“添加到购物车”按钮的点击事件,当用户点击按钮时,获取商品的 ID、名称和价格等信息,然后通过 Ajax 发送 POST 请求将这些信息提交到 `add-to-cart.php` 页面进行处理,最后弹出一个提示框显示添加成功的消息。需要注意的是,此处使用了 jQuery 库的 `$.ajax()` 方法来发送 Ajax 请求。
```
session_start();
$itemId = $_POST["id"];
$itemName = $_POST["name"];
$itemPrice = $_POST["price"];
if (!isset($_SESSION["cart"])) {
$_SESSION["cart"] = array();
}
array_push($_SESSION["cart"], array("id", $itemId, "name", $itemName, "price", $itemPrice));
echo "添加商品成功!";
```
这段代码是 `add-to-cart.php` 页面的处理逻辑,首先开启了 PHP 的会话(使用了 `session_start()` 函数),然后获取 Ajax 请求提交的商品信息,将其添加到购物车中(购物车使用 PHP 的数组来存储),最后返回一个添加成功的消息。
```
$(document).on("click", ".remove-item-btn", function() {
var itemId = $(this).data("id");
$.ajax({
type: "POST",
url: "remove-from-cart.php",
data: { id: itemId }
}).done(function(response) {
location.reload();
});
});
```
这段代码监听了“删除”按钮的点击事件,当用户点击按钮时,获取要删除的商品的 ID,并通过 Ajax 发送 POST 请求将这个 ID 提交到 `remove-from-cart.php` 页面进行处理,最后刷新页面以更新购物车的状态。
```
session_start();
$itemId = $_POST["id"];
foreach ($_SESSION["cart"] as $key => $item) {
if ($item["id"] == $itemId) {
unset($_SESSION["cart"][$key]);
}
}
echo "删除商品成功!";
```
这段代码是 `remove-from-cart.php` 页面的处理逻辑,首先开启了 PHP 的会话,然后获取 Ajax 请求提交的商品 ID,从购物车中查找对应的商品,并将其从购物车中删除,最后返回一个删除成功的消息。
```
$(".checkout-btn").click(function() {
var selectedItems = $(".cart-item:checked");
var totalPrice = 0;
selectedItems.each(function() {
var itemPrice = $(this).parents(".cart-item-row").find(".item-price").text();
var itemQty = $(this).parents(".cart-item-row").find(".item-qty").val();
var subTotal = itemPrice * itemQty;
totalPrice += subTotal;
});
window.location.href = "checkout.php?id=" + selectedItems.serialize() + "&total=" + totalPrice;
});
```
这段代码监听了“结算”按钮的点击事件,当用户点击按钮时,获取购物车中被选中的商品,计算它们的总价,并将选中的商品 ID 和总价作为 URL 参数传递到 `checkout.php` 页面进行结算处理,最后跳转到结算页面。
```
session_start();
$selectedIds = explode("&", $_GET["id"]);
foreach ($selectedIds as $key => $value) {
$selectedIds[$key] = substr($value, strpos($value, "=") + 1);
}
$totalPrice = $_GET["total"];
```
这段代码是 `checkout.php` 页面的处理逻辑,首先开启了 PHP 的会话,然后获取 URL 参数中的选中商品 ID 和总价,将选中商品的 ID 解析出来并存储到数组中,最后将总价存储到变量中。
阅读全文