一.修改思路
二. 完整的购物车项目(EL+JSTL)
2.1购物车界面代码:
<c:if test="${not empty listCarts}">
<c:forEach items="${listCarts }" var="ls" begin="${start }"
end="${end }">
<tr id="${ls.getGoods().getGid() }">
<td><input type="checkbox"></td>
<td>${ls.getGoods().getGname()}</td>
<td>${ls.getGoods().getGtype() }</td>
<td><img style="width: 70px; height: 50px"
src="${ls.getGoods().getGimage() }"></td>
<td>${ls.getGoods().getGprice() }</td>
<td><button
onclick="setcount('minus',${ls.getGoods().getGid() })">-</button>
<input style="width: 50px" type="text" value="${ls.getCount()}" />
<button onclick="setcount('add',${ls.getGoods().getGid() })">+</button></td>
<td>${ls.getZj() }</td>
<td>
<button onclick="del(${ls.getGoods().getGid() })">删除</button>
<button onclick="update(${ls.getGoods().getGid() })">修改</button>
</td>
<button onclick="jiesuan(${ls.getGoods().getGid() })">结算
</tr>
</c:forEach>
</c:if>
</table>
<div style="text-align: left;">
<button onclick="delChecked()">删除所选</button>
<button onclick="jsChecked()">结算所选</button>
</div>
<div style="text-align: right;">
《${pageIndex }/${pageMax }》 <a
href="doShooping_fy.jsp?pageIndex=${pageIndex-1<1?1:pageIndex-1 }">上一页</a>
<a
href="doShooping_fy.jsp?pageIndex=${pageIndex+1>pageMax?pageMax:pageIndex+1 }">下一页</a>
</div>
<script type="text/javascript">
function del(gid) {
window.location.href="dode.jsp?gid="+gid+"";
}
//数量加减
function setcount(type,gid) {
var tr=document.getElementById(gid);
var count=tr.cells[5].children[1].value;
if(type==='jj'){
if(count<=1){
alert("不能少于一件商品");
}else {
count--;
}
}else if(type==='add'){
count++;
}
tr.cells[5].children[1].value=count;
calc();
}
//统计总价
function calc() {
var oTabCart=document.getElementById("oTabCart");
var trs=oTabCart.rows;
for(var i=1;i<trs.length;i++){
//单价
var gprice=trs[i].cells[4].innerHTML;
//数量
var counts=trs[i].cells[5].children[1].value;
var ctotal=parseFloat(gprice)*parseFloat(counts);
trs[i].cells[6].innerHTML=ctotal;
}
}
function update(gid) {
var ccount =document.getElementById(gid).cells[5].children[1].value;
location.href="doxg.jsp?gid="+gid+"&ccount="+ccount+"";
}
window.onload=function(){
//全选
document.getElementById("All").onclick=function(){
var all=document.getElementById("All");
var checks=document.getElementsByName("check");
for(var i=0;i<checks.length;i++){
checks[i].checked=all.checked;
}
}
};
//完善全选
function setChecked(){
var flag=true;
var all=document.getElementById("All");
var checks=document.getElementsByName("check");
for(var i=0;i<checks.length;i++){
if(checks[i].checked==false){
flag=false;
}
}
all.checked=flag;
}
//删除所选
function delChecked(){
var checkeds=document.getElementsByName("check");
for(var i=0;i<checkeds.length;i++){
if(checkeds[i].checked==true){
//console.log(checkeds[i].parentElement.parentElement.id);
var gid=checkeds[i].parentElement.parentElement.id
del(gid);
}
}
}
function jsChecked(){
var checkeds=document.getElementsByName("check");
var count=0;
for(var i=0;i<checkeds.length;i++){
if(checkeds[i].checked==true){
var gid=checkeds[i].parentElement.parentElement.id;
var total= document.getElementById(gid).cells[6].innerHTML;
count+=parseInt(total);
//window.location.href="dodel.jsp?gid="+gid+"";
del(gid);
}
}
alert("你一共消费"+count+"元");
}
//计算总价
function setTotal(){
var tb=document.getElementById("oTab");
var trs=tb.rows;
for(var i=1;i<trs.length;i++){
//价格
var price=trs[i].cells[4].innerHTML;
//数量
var count=trs[i].cells[5].children[1].value;
trs[i].cells[6].innerHTML=price*count;
}
}
function update(gid,count){
var count=document.getElementById(gid).cells[5].children[1].value;
window.location.href="doupdate.jsp?gid="+gid+"&count="+count+"";
}
function jiesuan(gid){
var cof=confirm("你确定要结算该商品吗?");
if(cof==true){
var total= document.getElementById(gid).cells[6].innerHTML;
alert("你一共消费"+total+"元");
window.location.href="dodel.jsp?gid="+gid+"";
}
}
</script>
2.2do界面代码
(1)doshooping(显示分页)
<%
request.setCharacterEncoding("utf-8");
List<Cart> list = (List<Cart>) session.getAttribute("listCarts");
String index = request.getParameter("pageIndex");
int pageIndex = 1;
if (index != null) {
pageIndex = Integer.valueOf(index);
}
int pageSize = 3;
//设置开始值
int start = (pageIndex - 1) * pageSize;
//设置结束
int counts = list.size();
int end = 0;
if (pageIndex == 1) {
if (pageIndex * pageSize - 1 > counts) {
end = counts;
}
end = pageIndex * pageSize - 1;
} else {
if (pageIndex * pageSize > counts) {
end = counts;
}
end = pageIndex * pageSize;
}
//最大页码
int pageMax = counts % pageSize == 0 ? counts / pageSize : counts / pageSize + 1;
session.setAttribute("start", start);
session.setAttribute("end", end);
session.setAttribute("pageMax", pageMax);
session.setAttribute("pageIndex", pageIndex);
response.sendRedirect("gwc.jsp");
%>
(2)doadd(添加)
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("gid");
int gid = 0;
if (id != null) {
gid = Integer.valueOf(id);
}
Goodsbiz g = new Goodsbiz();
Goods good = g.ckdg(gid);
Cart cart = new Cart();
cart.setGoods(good);
cart.setCount(1);
cart.setZj();
List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
boolean flag = true;
if (listCarts == null) {
//构建一个购物车
listCarts = new ArrayList<Cart>();
} else {
for (Cart ct : listCarts) {
if (ct.getGoods().getGid() == gid) {
ct.setCount(ct.getCount() + 1);
ct.setZj();
flag = false;
}
}
}
if (flag == true) {
listCarts.add(cart);
}
session.setAttribute("listCarts", listCarts);
response.sendRedirect("doShooping_fy.jsp");
%>
(3)dodel( 删除购物车商品)
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("gid");
int gid = 0;
if (id != null) {
gid = Integer.valueOf(id);
}
List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
for (int i = 0; i < listCarts.size(); i++) {
if (listCarts.get(i).getGoods().getGid() == gid) {
listCarts.remove(i);
}
}
session.setAttribute("listCarts", listCarts);
response.sendRedirect("gwc.jsp");
%>
(4)doxg(购物车修改——数量 价格改变)
<%
request.setCharacterEncoding("utf-8");
String id = request.getParameter("gid");
int gid = 0;
if (id != null) {
gid = Integer.valueOf(id);
}
String count = request.getParameter("ccount");
int ccount = 0;
if (count != null) {
ccount = Integer.valueOf(count);
}
List<Cart> listCarts = (List<Cart>) session.getAttribute("listCarts");
for (int i = 0; i < listCarts.size(); i++) {
if (listCarts.get(i).getGoods().getGid() == gid) {
listCarts.get(i).setCount(ccount);
listCarts.get(i).setZj();
}
}
session.setAttribute("listCarts", listCarts);
response.sendRedirect("gwc.jsp");
%>