按照正常逻辑走这个代码没问题,但有一次我瞎点的时候,总价没有清空,而是继续向上加,然后继续瞎点就找不到这个问题。
列出来仔细琢磨
合计:
//单选 var sell; var qty; // 商品数量 var jiage; //商品价格 var zongjia = 0; //选中商品的总价 var check = document.getElementsByName("check"); function onCheck(target) { $(this).parent().toggleClass("on"); if (target.checked) { $(".car_pay span").addClass("on"); sell = target.attributes["sellprice"].nodeValue; qty = target.attributes["qty"].nodeValue; jiage = sell * qty; //当前选中商品的价格 zongjia += jiage;//所有选中商品的价格 document.getElementsByClassName('shop_zjg')[0].innerHTML = zongjia; } else { sell = target.attributes["sellprice"].nodeValue; qty = target.attributes["qty"].nodeValue; jiage = sell * qty; zongjia -= jiage; if (zongjia < 0) {//如果全选了在取消选中当前商品,这时候总价为0,所以我重新计算一下所有商品的总价 var qj = 0; for (var i = 0; i < check.length; i++) { var jg = 0; sell = check[i].attributes["sellprice"].nodeValue; qty = check[i].attributes["qty"].nodeValue; jg = sell * qty; qj += jg; } zongjia = qj - jiage; } document.getElementsByClassName('shop_zjg')[0].innerHTML = zongjia; } for (var i = 0; i < check.length; i++) {//这个是判断是否全选的,用循环判断所有checked是否选中,有一个没被选中就不是全选。 if (check[i].checked==true) { $(".pay label span").addClass("on"); } else { $(".pay label span").removeClass("on"); return; } } }
//全选 $(".pay label span").click(function () { var quanjia = 0; if ($(this).hasClass("on")) { $(this).removeClass("on"); $("label input").prop("checked", false); $("label").removeClass("on"); document.getElementsByClassName('shop_zjg')[0].innerHTML = 0; } else { $(this).addClass("on"); $("label input").prop("checked", true); $("label").addClass("on"); for (var i = 0; i < check.length; i++) { sell = check[i].attributes["sellprice"].nodeValue; qty = check[i].attributes["qty"].nodeValue; jiage = sell * qty; quanjia += jiage; } document.getElementsByClassName('shop_zjg')[0].innerHTML = quanjia; zongjia = 0; } });