PHP新手求助:购物车底部汇总栏小计金额不显示/不更新的解决方法
PHP新手求助:购物车底部汇总栏小计金额不显示/不更新的解决方法
嘿,哥们儿!作为同样踩过不少前端小坑的开发者,我一眼就瞅出问题在哪儿了——你的JavaScript代码只更新了表格里的小计,完全没顾上底部固定栏里的那个!
咱们先扒一扒问题根源:你页面里有两个带.sub_total类的元素(一个在表格的汇总行,一个在底部的购物车固定栏),还有两个.total_products_count元素。但你用的document.querySelector()只会获取第一个匹配到的元素,所以底部的那两个元素永远没被更新到!
解决方法超简单,把单个元素选择改成批量选择+遍历更新:
把你updateCart函数里最后两行更新内容的代码,替换成下面这段:
// 批量更新所有.sub_total元素的内容 document.querySelectorAll('.sub_total').forEach(element => { element.textContent = subTotal.toFixed(2); }); // 同样批量更新所有.total_products_count元素的内容 document.querySelectorAll('.total_products_count').forEach(element => { element.textContent = totalItems; });
修改后的完整JS代码参考:
// 给所有数量输入框绑定更新事件 document.querySelectorAll('.product-quantity').forEach(input => { input.addEventListener('input', updateCart); }); function updateCart() { let totalItems = 0; let subTotal = 0; // 遍历所有商品行,计算每个商品的总价、总数量和总金额 document.querySelectorAll('.product-quantity').forEach(input => { const quantity = parseInt(input.value) || 0; const price = parseFloat(input.getAttribute('data-price')) || 0; const productTotal = quantity * price; // 更新当前商品的单行总价 input.closest('tr').querySelector('.product-total').textContent = productTotal.toFixed(2); // 累加总数量和总金额 subTotal += productTotal; totalItems += quantity; }); // 👇这里是修改后的核心代码:同步更新页面上所有对应元素 document.querySelectorAll('.sub_total').forEach(element => { element.textContent = subTotal.toFixed(2); }); document.querySelectorAll('.total_products_count').forEach(element => { element.textContent = totalItems; }); } // 页面加载时先执行一次,确保初始状态正确 updateCart();
为啥这样改就好使?
querySelectorAll()会返回页面中所有匹配指定选择器的元素集合- 用
forEach遍历这个集合,就能把计算好的小计和商品数量同步更新到页面上所有对应的位置,不管是表格里还是底部栏里的元素都能被覆盖到
现在你再测试一下,修改商品数量的时候,表格和底部汇总栏的小计、商品数量应该都会同步更新啦!
备注:内容来源于stack exchange,提问作者atozcodes
相关产品推荐
相关产品推荐

