jQuery实现购物车功能有:
主要有添加商品
增加和减少商品数量
点击购物车时 库存也相应的减少
数量的 减少 库存进行增加
根据增加、减少或选择的商品获取金额
实现商品价格的计算
删除 把删除的数量归还到库存中
<!DOCTYPE html>
<html>
<head>
<title>购物车</title>
<meta charset="utf-8" />
<style type="text/css">
h1 {
text-align:center;
}
table {
margin:0 auto;
width:60%;
border:2px solid #aaa;
border-collapse:collapse;
}
table th, table td {
border:2px solid #aaa;
padding:5px;
}
th {
background-color:#eee;
}
</style>
<script src="js/jquery-3.6.0.js"></script>
<script src="gwc-ds.js" ></script>
</head>
<body>
<h1>清 仓 大 甩 卖!</h1>
<table>
<tbody id="upGoods">
<tr>
<th>商品</th>
<th>单价(元)</th>
<th>颜色</th>
<th>库存</th>
<th>好评率</th>
<th>操作</th>
</tr>
<tr>
<td>罗技M185鼠标</td>
<td>80</td>
<td>黑色</td>
<td>893</td>
<td>98%</td>
<td align='center'>
<input type='button' value='加入购物车' onclick='add_shoppingcart(this)'/>
</td>
</tr>
<tr>
<td>微软X470键盘</td>
<td>150</td>
<td>黑色</td>
<td>9028</td>
<td>96%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>洛克iphone6手机壳</td>
<td>60</td>
<td>透明</td>
<td>672</td>
<td>99%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>蓝牙耳机</td>
<td>100</td>
<td>蓝色</td>
<td>8937</td>
<td>95%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
<tr>
<td>金士顿U盘</td>
<td>70</td>
<td>红色</td>
<td>482</td>
<td>100%</td>
<td align="center">
<input type="button" value="加入购物车" onclick="add_shoppingcart(this);"/>
</td>
</tr>
</tbody>
</table>
<h1>购 物 车</h1>
<table>
<thead>
<tr>
<th>商品</th>
<th>单价(元)</th>
<th>数量</th>
<th>金额(元)</th>
<th>删除</th>
</tr>
</thead>
<tbody id="goods">
<!-- <tr>
<td>罗技M185鼠标</td>
<td>80</td>
<td align="center">
<input type="button" value="-"/>
<input type="text" size="3" readonly value="10"/>
<input type="button" value="+"/>
</td>
<td>80</td>
<td align="center"><input type="button" value="x" onclick="deleteGoods(this)"/></td>
</tr> -->
</tbody>
<tfoot>
<tr>
<td colspan="3" align="right">总计:</td>
<td id="total">0</td>
<td></td>
</tr>
</tfoot>
</table>
</body>
</html>
gwc-ds.js
$(function(){
console.log("js的外部引入")
})
var downTrDom='';
// 1.给 加入购物车 添加一个 点击事件
function add_shoppingcart(dom){
var trDom= $(dom).parent().parent();
// 拿第一个 td
var goodsName= trDom.children().eq(0).text();
var goodsPrice= trDom.children().eq(1).text();
var goodskuCun= trDom.children().eq(3).text();
//下面是库存
console.log("下面是库存"+goodskuCun);
//点击购物车是 库存减少
trDom.children().eq(3).text(--goodskuCun)
// 2. 把 trDom 放入到 下面的 table表格的 goods中
// 按需要 添加
// 编辑一个 dom 元素
renderTr(goodsName,goodsPrice,goodsPrice,1);
// 1.1 遍历购物车
var goodsTrDom= $("#goods tr");
// 创建一个数组,用来装 产品名称
var namesArr=new Array();
$.each(goodsTrDom, function(index, value) {
// 在遍历的 循环里面 去看 下面的内容和上面的内容是否有一样的.
console.log( )
// 获取 $(this)的下面的 td
// 把拿到名字 装入到 数组当中去
namesArr.push($(this).children('td').eq(0).text() );
})
console.log(namesArr);
// 做数组是否有name的判断
var isHasName= namesArr.indexOf(goodsName);
// console.log(isHasName)
if (isHasName>=0) { // 证明下面有了
// 1. 找出 下面数量 进行 +1 , 上面的库存 -1 , 找出金额+单价
// 1. 定位出来 你选择的这个购物车的 tr
// console.log(goodsName);
// console.log(isHasName);
// 拿取 goods tr 对象的下面的数量
var goodsCount= goodsTrDom.eq(isHasName).children('td').eq(2).children().eq(1).val()
var num= Number.parseInt(goodsCount)+1;
goodsTrDom.eq(isHasName).children('td').eq(2).children().eq(1).val(num); // 数量增加了
var goodsCount1=Number.parseInt( goodsTrDom.eq(isHasName).children('td').eq(2).children().eq(1).val() );
// 金额的公式 = 数量 * 单价
console.log("下面是")
console.log(goodsCount1)
var tprice= goodsCount1*goodsPrice
console.log("下面是总价")
console.log(tprice)
// 清空之前的,
goodsTrDom.eq(isHasName).remove();
renderTr(goodsName,goodsPrice,tprice,num)
$("#goods").prepend(downTrDom);
//总价
sum();
} else { // 下面没有
$("#goods").prepend(downTrDom);
sum();
}
}
// 提取一个 Tr
function renderTr(goodsName,goodsPrice,tprice,num){
console.log(num)
downTrDom= $( "<tr>"
+" <td>"+goodsName+"</td>"
+" <td>"+goodsPrice+"</td>"
+" <td align='center'>"
+" <input onclick='sub(this)' type='button' value='-'/>"
+" <input type='text' size='3' readonly value="+num+">"
+" <input onclick='add(this)' type='button' value='+'/>"
+" </td>"
+" <td>"+tprice+"</td>"
+" <td align='center'><input type='button' onclick='del(this)' value='x'/></td>"
+" </tr>"
);
}
function sub(dom){
var trDom= $(dom).parent().parent();
console.log(trDom)
// 拿第一个 td
var goodsName= trDom.children().eq(0).text();
var goodsPrice= trDom.children().eq(1).text();
var goodsCount= trDom.children().eq(2).children().eq(1).val();
var subCount= Number.parseInt( goodsCount )-1;
if(subCount==0){
// 等于0 remove这个行,数组删除 名字
trDom.remove();
// 把数组中的名字删除
// namesArr.pop(goodsName)
//console.log(namesArr)
}
trDom.children().eq(2).children().eq(1).val(subCount);
console.log(goodsName)
console.log(goodsPrice)
console.log(goodsCount)
console.log(subCount)
var tprice=subCount * goodsPrice;
// 把tprice 输入到 金额中
trDom.children().eq(3).text(tprice);
//数量的 减少 库存进行增加
$.each($("#upGoods tr"), function(index, value) {
var goodsNameUp = $(this).children().eq(0).text();
var isTrue = goodsNameUp == goodsName;
if(isTrue){
//找到了就让库存增加
var kucunCount = $(this).children().eq(3).text();
var newKucun = Number.parseInt(kucunCount)+1;
$(this).children().eq(3).text(newKucun);
}
});
sum();
}
function add(dom){
var trDom= $(dom).parent().parent();
console.log(trDom)
// 拿第一个 td
var goodsName= trDom.children().eq(0).text();
var goodsPrice= trDom.children().eq(1).text();
var goodsCount= trDom.children().eq(2).children().eq(1).val();
var subCount= Number.parseInt( goodsCount )+1;
if(subCount==0){
// 等于0 remove这个行,数组删除 名字
trDom.remove();
// 把数组中的名字删除
// namesArr.pop(goodsName)
//console.log(namesArr)
}
trDom.children().eq(2).children().eq(1).val(subCount);
console.log(goodsName)
console.log(goodsPrice)
console.log(goodsCount)
console.log(subCount)
var tprice=subCount * goodsPrice;
// 把tprice 输入到 金额中
trDom.children().eq(3).text(tprice);
//数量的 增加 库存进行减少
$.each($("#upGoods tr"), function(index, value) {
var goodsNameUp = $(this).children().eq(0).text();
var isTrue = goodsNameUp == goodsName;
if(isTrue){
//找到了就让库存增加
var kucunCount = $(this).children().eq(3).text();
var newKucun = Number.parseInt(kucunCount)-1;
$(this).children().eq(3).text(newKucun);
}
});
sum();
}
//总计
var allMoney = 0;
function sum(){
allMoney = 0;
var trDom = $("#goods tr")
$.each(trDom, function(index, value) {
var newMoney = Number.parseInt($(this).children().eq(3).text());
allMoney = newMoney+allMoney;
})
console.log("这是总价"+allMoney)
//存入到表格中
$('#total').text(allMoney)
}
function del(dom){
var trDom = $(dom).parent().parent();
var goodsName = trDom.children().eq(0).text()
var count = Number.parseInt(trDom.children().eq(2).children().eq(1).val());
console.log(count)
//删除的话 把删除的数量归还到库存中
$.each($("#upGoods tr"), function(index, value) {
var goodsNameUp = $(this).children().eq(0).text();
var isTrue = goodsNameUp == goodsName;
if(isTrue){
//找到了就让库存减少
var kucunCount = $(this).children().eq(3).text();
var newKucun = Number.parseInt(kucunCount)+count;
$(this).children().eq(3).text(newKucun);
}
});
trDom.remove();
sum();
}
实现效果:
jQuery实现增减购物车商品信息功能有:
主要有添加商品
增加和减少商品数量
根据增加、减少或选择的商品获取金额
实现商品价格的计算
单行删除
批量删除
.toFixed(2) 保留两位小数
.toLocaleString() 保留一位小数
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>增减购物车商品信息 </title>
<script type="text/javascript" src="./js/jquery-3.6.0.js"></script>
<script src="./gwc.js"></script>
<style type="text/css">
* {
font-size: 12px;
}
</style>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<th><input type='checkbox' onclick="checkAll(this)" />全选</th>
<th>商品信息</th>
<th>宜美惠价</th>
<th>数量</th>
<th>操作</th>
</tr>
<tr class="tr_0">
<td>
<input name="" type="checkbox" value="" />
</td>
<td>
<img src="images/sang.gif" class="products" /><a href="#">天堂雨伞</a>
</td>
<td>¥32.9元</td>
<td>
<img src="images/subtraction.gif" width="20" height="20" onclick="sign(this)" />
<input type="text" class="quantity" value="1" />
<img src="images/add.gif" width="20" height="20" onclick="plus(this)"/>
</td>
<td>
<a href="#" class="del">删除</a>
</td>
</tr>
<tr id="tr2">
<td>
<input name="" type="checkbox" value="" />
</td>
<td>
<img src="images/iphone.gif" class="products" /><a href="#">苹果手机iphone5</a>
</td>
<td>¥3339元
</td>
<td>
<img src="images/subtraction.gif" width="20" height="20" onclick="signs(this)"/>
<input type="text" class="quantity" value="1" />
<img src="images/add.gif" width="20" height="20" onclick="pluss(this)"/>
</td>
<td>
<a href="#" class="del">删除</a>
</td>
</tr>
</table>
<a href="#" id="add">添加</a>
<a href="#" id="delBash">删除</a>
</body>
</html>
gwc.js
//全选 全不选
function checkAll(data) {
var isTrue = $(data).prop('checked')
var checkDom = $("table tr td input")
if (isTrue) {
$.each(checkDom, function (index, value) {
$(this).prop('checked', true);
})
} else {
$.each(checkDom, function (index, value) {
$(this).prop('checked', false);
})
}
}
//减号
function sign(btn) {
//获取按钮的哥哥的值(数量)
var amount = $(btn).next().val();
if (amount >= 2) {
//数量-1,再写回文本框
$(btn).next().val(--amount);
//获取金额
//var price = $(btn).parent().prev().html();
//.toFixed(2) 保留两位小数
//.toLocaleString() 保留一位小数
//计算金额,再写入按钮的父亲的弟弟内
var num = $(btn).parent().prev().html("¥" + (amount * 32.9).toFixed(2) + "元");
}
}
function signs(btn) {
var amount = $(btn).next().val();
if (amount >= 2) {
$(btn).next().val(--amount);
var num = $(btn).parent().prev().html("¥" + (amount * 3339).toFixed(2) + "元");
}
}
//加号
function plus(btn) {
//获取按钮的哥哥的值(数量)
var amount = $(btn).prev().val();
//数量+1,再写回文本框
$(btn).prev().val(++amount);
//计算金额,再写入按钮的父亲的弟弟内
$(btn).parent().prev().html("¥" + (amount * 32.9).toFixed(2) + "元");
}
function pluss(btn) {
var amount = $(btn).prev().val();
$(btn).prev().val(++amount);
$(btn).parent().prev().html("¥" + (amount * 3339).toFixed(2) + "元");
}
$(function () {
//删除
$(".del").click(function () {
$(this).parent().parent().remove();
})
//批量删除
$("#delBash").click(function () {
$("table tr td input:checked").each(function (index, value) {
$(this).parent().parent().remove();
})
})
//添加
$("#add").click(function () {
var yi = $('.tr_0 td:eq(3) input').val()
var er = $('#tr2 td:eq(3) input').val()
if (yi == er) {
add1()
}
if (yi > er) {
add2()
} else {
add1()
}
})
})
function add1() {
var yi = $('.tr_0 td:eq(3) input').val()
var plus = $('.tr_0 td:eq(3) img').prev().val(++yi)
var num = $(plus).parent().prev().html('¥' + (amount * 32.9).toFixed(2)+ '元')
num = num.toFixed(2);
}
function add2() {
var yi = $('#tr2 td:eq(3) input').val()
var plus = $('#tr2 td:eq(3) img').prev().val(++yi)
$(plus).parent().prev().html('¥' + (amount * 3339).toFixed(2) + '元')
}