function getTotal(){ var carBody = document.getElementById("carBody"); var tr = carBody.getElementsByTagName("tr"); var price = 0; var count = 0; for(var i=0;i<tr.length;i++){ var input = tr[i].getElementsByTagName("input"); if(input[0].checked){ var td2 = tr[i].getElementsByTagName('td')[2].innerText; var numCount = parseInt(input[1].value); tr[i].getElementsByTagName('td')[4].innerText = td2 * numCount; price += parseFloat(tr[i].getElementsByTagName('td')[4].innerText) count += parseInt(input[1].value) } } totalPrice.innerText = price.toFixed(2); totalCount.innerText = count; } 这段代码的意思
时间: 2024-04-05 07:36:00 浏览: 61
这段代码是一个 JavaScript 的函数,它的作用是计算购物车中所有商品的总价和总数量,并将结果显示在页面上。
首先,该函数会获取页面中 id 为 "carBody" 的元素(即购物车表格),然后获取所有的 tr 元素,并循环遍历每一个 tr 元素。
对于每一个 tr 元素,如果该元素内部的复选框被选中(即 input[0]),则会计算该商品的价格 td2 与数量 numCount 的乘积,并将结果显示在该商品的小计中(即 tr[i].getElementsByTagName('td')[4])。同时,该函数会累加所有商品的价格和数量,最后将结果分别显示在页面上。
需要注意的是,该函数中的 totalPrice 和 totalCount 是在页面上事先准备好的元素,用于显示总价和总数量。toFixed(2) 方法用于保留两位小数。
相关问题
function getTotal(){ var tbody = document.querySelector("tbody"); var tr = tbody.querySelectorAll("tr"); var price = 0; for(var i=0;i<tr.length;i++){ var input = tr[i].querySelector("input"); if(input[0].checked){ price+=parseInt(tr[i].querySelectorAll('td')[2].innerText); } } priceTotal.innerText = price; selectedTotal.innerText =520; }以上代码报错: cannot read propertise of undefined(reading checked),怎么修改
可以尝试将 `input[0]` 改为 `input.checked`,因为 `input` 不是一个数组,是一个 DOM 对象,它没有 `[0]` 这个属性。修改后的代码如下:
```
function getTotal() {
var tbody = document.querySelector("tbody");
var tr = tbody.querySelectorAll("tr");
var price = 0;
for (var i = 0; i < tr.length; i++) {
var input = tr[i].querySelector("input");
if (input.checked) {
price += parseInt(tr[i].querySelectorAll('td')[2].innerText);
}
}
priceTotal.innerText = price;
selectedTotal.innerText = 520;
}
```
这样应该就可以解决这个报错了。
for(var i=0;i<tr.length;i++){ tr[i].onclick = function(e){ var e = window.event || e; var target = e.target || e.srcElement; var input1 = this.getElementsByTagName("input")[1]; switch(target.className){ case 'add': input1.value = parseInt(input1.value) + 1; break; case 'reduce': if(input1.value > 1){ input1.value = parseInt(input1.value) - 1; }else{ input1.value = 1; } break; case 'del': carBody.removeChild(target.parentNode.parentNode) break; } getTotal() } } 这段代码的意思
这段代码是一个 JavaScript 的函数,它会获取页面中所有的 tr 元素,并且为每一个 tr 元素绑定一个 onclick 事件。当用户点击 tr 元素中的加号、减号或删除按钮时,会执行相应的操作。
具体来说,当用户点击加号时,会将该商品的数量加一;当用户点击减号时,会将该商品的数量减一,但是商品数量不能小于 1;当用户点击删除按钮时,会将该商品从购物车中删除。
每一次操作都会调用 getTotal 函数来更新购物车中所有商品的总价。需要注意的是,这些操作都是在 tr 元素上执行的,但是具体的操作是在 tr 元素内部的元素上执行的,比如加号、减号和删除按钮,所以需要使用 event 对象来获取用户点击的具体元素。
阅读全文