效果
代码
html 结构
<div>
<ul id="list-group">
<li>
<input type="button" value="-" name="sub"/>
<strong>0</strong>
<input type="button" value="+" name="add"/>
单价:<em>12.5元</em>
小计:<span>0元</span>
</li>
<li>
<input type="button" value="-" name="sub"/>
<strong>0</strong>
<input type="button" value="+" name="add"/>
单价:<em>10元</em>
小计:<span>0元</span>
</li>
<li>
<input type="button" value="-" name="sub"/>
<strong>0</strong>
<input type="button" value="+" name="add"/>
单价:<em>22.5元</em>
小计:<span>0元</span>
</li>
<li>
<input type="button" value="-" name="sub"/>
<strong>0</strong>
<input type="button" value="+" name="add"/>
单价:<em>6.5元</em>
小计:<span>0元</span>
</li>
</ul>
<p id="allUnit">商品数量合计共:0件</p>
<p id="allPrice">总消费:0元<br/>
<p id="maxPrice">其中购买的商品总价最贵的:0元</p>
</div>
JS
// 单个商品数量dom
var oUnit = document.getElementsByTagName('strong');
// 单价dom
var onePrice = document.getElementsByTagName('em');
// 小计 dom
var subTotal = document.getElementsByTagName('span');
// 总件数 dom
var allUnit = document.getElementById('allUnit');
// 总价 dom
var oAllPrice = document.getElementById('allPrice');
// 最贵商品
var maxPrice = document.getElementById('maxPrice');
// li
var oUl = document.getElementById('list-group');
var oLi = oUl.getElementsByTagName('li');
for (let i =0; i<oLi.length; i++) {
handleShop(i);
};
// 商品加减
function handleShop(index) {
let addBtn = document.getElementsByName('add');
let subBtn = document.getElementsByName('sub');
let num = 0;
// 商品添加
addBtn[index].onclick = () => {
num ++;
// 单个商品数量
oUnit[index].innerText = num;
// 小计
subTotal[index].innerText = parseFloat(onePrice[index].innerText)*num + '元';
// 总件数
allUnit.innerText = `商品数量合计共:${total()}件`;
// 总价
oAllPrice.innerText = `总消费:${allPrice()}元`;
// 最大值
maxPrice.innerText = `其中购买的商品总价最贵的:${max()}元`;
};
// 商品减去
subBtn[index].onclick = () => {
num -- ;
if (num < 0){
num = 0;
};
// 单个商品数量
oUnit[index].innerText = num;
// 小计
subTotal[index].innerText = parseFloat(onePrice[index].innerText)*num + '元';
// 总件数
allUnit.innerText = `商品数量合计共:${total()}件`;
// 总价
oAllPrice.innerText = `总消费:${allPrice()}元`;
// 最大值
maxPrice.innerText = `其中购买的商品总价最贵的:${max()}元`;
};
};
// 总件数
function total() {
let sum = 0;
for (let i=0; i<oUnit.length; i++) {
sum += parseInt(oUnit[i].innerText)
};
return sum;
};
// 总价
function allPrice() {
let sum = 0;
for (let i=0; i<subTotal.length; i++) {
sum += parseFloat(subTotal[i].innerText);
};
return sum;
};
// 最大值
function max() {
let arr = [];
for (let i=0; i<subTotal.length; i++) {
arr.push(parseFloat(subTotal[i].innerText));
};
// 最大值,最小值反过来就可以
arr.sort((a, b) => {
return b-a
});
return arr[0];
}