在做 Asp.Net的购物网站时,查阅整理了一个购物车脚本,内含有操作cookie的方法,也有Josn转换的方法,使用方便,操作简单,老少皆宜。请各位更改指正
/**** 改变价格方法 ****/
function changePrice() {
var num = document.getElementById("number").value;
if (num < 0 || num > 9999)
rentun;
var price = document.getElementById("totalPrice").value;
document.getElementById("ECS_GOODS_AMOUNT").innerHTML = price * num + ".00";
}
/**********************************/
/**********************************/
/****CookiesHepler cookie操作类****/
/**********************************/
/**********************************/
/*根据名字获得Cookie值*/
function getCookie(c_name) {
if (document.cookie.length > 0) {
c_start = document.cookie.indexOf(c_name + "=")
if (c_start != -1) {
c_start = c_start + c_name.length + 1
c_end = document.cookie.indexOf(";", c_start)
if (c_end == -1) c_end = document.cookie.length
return unescape(document.cookie.substring(c_start, c_end))
}
}
return ""
}
/* 设置Cookie的值 */
function setCookie(c_name, value, expiredays) {
var exdate = new Date()
exdate.setDate(exdate.getDate() + expiredays)
document.cookie = c_name + "=" + escape(value) +
((expiredays == null) ? "" : ";expires=" + exdate.toGMTString())
}
/*jsonHepler*/
var jsonToString = function(obj) {
var THIS = this;
switch (typeof (obj)) {
case 'string':
return '"' + obj.replace(/(["\\])/g, '\\$1') + '"';
case 'array':
return '[' + obj.map(THIS.jsonToString).join(',') + ']';
case 'object':
if (obj instanceof Array) {
var strArr = [];
var len = obj.length;
for (var i = 0; i < len; i++) {
strArr.push(THIS.jsonToString(obj[i]));
}
return '[' + strArr.join(',') + ']';
}
else if (obj == null) {
return 'null';
}
else {
var string = [];
for (var property in obj)
string.push(THIS.jsonToString(property) + ':' + THIS.jsonToString(obj[property]));
return '{' + string.join(',') + '}';
}
case 'number':
return obj;
case false:
return obj;
}
}
var stringToJSON = function(obj)
{
return eval('(' + obj + ')');
}
/*****************************/
/*******购物车业务开始********/
/*****************************/
/*****************************/
//获得购物车中商品的数量
function CarNumber()
{
//debugger;
//获得购物车数组
var cookieValue = getCookie("shopCar");
var shopCar;
if (cookieValue == "" || cookieValue == "undefined")
document.getElementById("carNum").innerHTML= "0";
else {
shopCar = stringToJSON(cookieValue);
document.getElementById("carNum").innerHTML= shopCar.length;
}
}
//添加商品至购物车方法1
function addToCar(proId, proNo, proName, proOldPrice, proNowPrice) {
var number = document.getElementById("number").value;
var cookieValue = getCookie("shopCar");
//创建购物车对象
var shopCar;
//如果购物车为空添加新商品
if (cookieValue == "" ||cookieValue == "undefined") {
//创建新购物车
shopCar = new Array();
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = number;
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
shopCar[0] = good;
}
else
{
//获得购物车对象
shopCar = stringToJSON(cookieValue);
var index = shopCar.length;
//便利购物车中的商品
var i ;
for (i = 0; i < index; i++) {
var good = shopCar[i];
//购物车中是否存在要添加的商品
if (good.id == proId)
{
//追加数量并求出总金额
good.proNumber = parseInt(good.proNumber) + parseInt(number);
good.proTatol = good.nowPrice * good.proNumber;
break;
}
}
//如果循环未终端,则添加新商品到购物车
if (i == index)
{
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = number;
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
shopCar[index] = good;
}
}
setCookie("shopCar", jsonToString(shopCar), 12);
var pop = window.open("/myshopcar.aspx");
pop.focus();
}
//添加商品至购物车方法2
function addToCar2(proId, proNo, proName, proOldPrice, proNowPrice) {
var number = document.getElementById("number").value;
var cookieValue = getCookie("shopCar");
//创建购物车对象
var shopCar;
//如果购物车为空添加新商品
if (cookieValue == "" || cookieValue == "undefined") {
//创建新购物车
shopCar = new Array();
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = number;
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
shopCar[0] = good;
}
else {
//获得购物车对象
shopCar = stringToJSON(cookieValue);
var index = shopCar.length;
//便利购物车中的商品
var i;
for (i = 0; i < index; i++) {
var good = shopCar[i];
//购物车中是否存在要添加的商品
if (good.id == proId) {
//debugger;
//追加数量并求出总金额
good.proNumber = parseInt(good.proNumber) + parseInt(number);
good.proTatol = good.nowPrice * good.proNumber;
break;
}
}
//如果循环未终端,则添加新商品到购物车
if (i == index) {
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = parseInt(number);
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
shopCar[index] = good;
}
}
setCookie("shopCar", jsonToString(shopCar), 12);
show_add2car();
}
//添加商品至购物车方法3
function addToCar3(proId, proNo, proName, proOldPrice, proNowPrice) {
var cookieValue = getCookie("shopCar");
//创建购物车对象
var shopCar;
//如果购物车为空添加新商品
if (cookieValue == "" || cookieValue == "undefined") {
//创建新购物车
shopCar = new Array();
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = 1;
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
shopCar[0] = good;
}
else {
//获得购物车对象
shopCar = stringToJSON(cookieValue);
var index = shopCar.length;
//便利购物车中的商品
var i;
for (i = 0; i < index; i++) {
var good = shopCar[i];
//购物车中是否存在要添加的商品
if (good.id == proId) {
//追加数量并求出总金额
good.proNumber = parseInt(good.proNumber) + 1;
good.proTatol = good.nowPrice * good.proNumber;
break;
}
}
//如果循环未终端,则添加新商品到购物车
if (i == index) {
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = 1;
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
shopCar[index] = good;
}
}
setCookie("shopCar", jsonToString(shopCar), 12);
alert("商品已加入购物车!");
removeFavoriteProduct2(proId);
}
/*商品加入收藏夹方法*/
function addFavorite(proId, proNo, proName, proOldPrice, proNowPrice) {
var cookieValue = getCookie("myFavorite");
//创建收藏夹对象
var favorite;
//如果收藏夹为空添加新商品
if (cookieValue == "" || cookieValue == "undefined") {
//创建新购物车
favorite = new Array();
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = 1;
good.proTatol = good.nowPrice * good.proNumber;
//给购物车添加商品
favorite[0] = good;
}
else {
//获得收藏夹对象
favorite = stringToJSON(cookieValue);
var index = favorite.length;
//遍历收藏夹中的商品
var i;
for (i = 0; i < index; i++) {
var good = favorite[i];
//收藏夹中是否存在要添加的商品
if (good.id == proId) {
alert("该商品已在收藏夹");
return;
}
}
//如果循环未终端,则添加新商品到购物车
if (i == index) {
//创建一个商品对象
var good = new Object();
good.id = proId;
good.no = proNo;
good.name = proName;
good.oldPrice = proOldPrice;
good.nowPrice = proNowPrice;
good.proNumber = 1;
good.proTatol = good.nowPrice * good.proNumber;
//给收藏夹添加商品
favorite[index] = good;
}
}
setCookie("myFavorite", jsonToString(favorite), 12);
alert("商品已加入收藏夹");
}
//更新购物车方法
function updateCar(proId) {
//debugger;
var id = "num" + proId;
var proNumber = document.getElementById(id).value;
var cookieValue = getCookie("shopCar");
if (cookieValue != null && cookieValue.length != 0)
{
//创建购物车对象
var shopCar = stringToJSON(cookieValue);
for (var i = 0; i < shopCar.length; i++)
{
var good = shopCar[i];
if (good.id == proId)
{
good.proNumber = parseInt(proNumber);
good.proTatol = good.nowPrice * good.proNumber;
break;
}
}
}
setCookie("shopCar", jsonToString(shopCar), 12);
readCar();
}
//读取购物车方法
function readCar() {
//购物车页面字符串
var carHtmlStr="";
//购物总金额
var totalMoney = 0;
//市场价总金额
var totalMoneyOld = 0;
//商品总个数
var totalNum = 0;
var cookieValue = getCookie("shopCar");
if (cookieValue != "" && cookieValue != "undefined")
{
carHtmlStr += "<table border='0' cellspacing='1' cellpadding='5' width='99%' bgColor='#dddddd' align='center'><tbody>";
carHtmlStr += "<tr>";
carHtmlStr += "<th bgColor='#ffffff'>商品名称</th>";
carHtmlStr += "<th bgColor='#ffffff'>商品货号</th>";
carHtmlStr += "<th bgColor='#ffffff'>市场价</th>";
carHtmlStr += "<th bgColor='#ffffff'>本店价</th>";
carHtmlStr += "<th bgColor='#ffffff'>购买数量</th>";
carHtmlStr += "<th bgColor='#ffffff'>小计</th>";
carHtmlStr += "<th bgColor='#ffffff'>操作</th>";
carHtmlStr += "</tr>";
//获得购物车
var shopCar = stringToJSON(cookieValue);
for (var i = 0; i < shopCar.length; i++)
{
var good = shopCar[i];
totalMoney += parseInt(good.proTatol);
totalNum += parseInt(good.proNumber);
totalMoneyOld += parseInt(good.oldPrice * good.proNumber);
carHtmlStr += "<tr>";
carHtmlStr += "<td bgColor=#ffffff align=middle>";
carHtmlStr += "<a href='/showinfopage.aspx?ProductId="+good.id+"' target='_blank'>";
carHtmlStr += "<img width='150px' height='150px' alt='"+good.name+"' border=0 src='/image/product/"+good.no+"/220.jpg'>";
carHtmlStr += "</a><br/>";
carHtmlStr += "<a class='f6' href='/showinfopage.aspx?ProductId=" + good.id + "' target='_blank'>" + good.name + "</a></td>";
carHtmlStr += "<td bgColor='#ffffff' align='middle'>" + good.no + "</td>";
carHtmlStr += "<td bgColor='#ffffff' align='right'>¥" + good.oldPrice + "元</td>";
carHtmlStr += "<td bgColor='#ffffff' align='right'>¥" + good.nowPrice + "元</td>";
carHtmlStr += "<td bgColor='#ffffff' align='center'>";
carHtmlStr += "<input type='text' style='TEXT-ALIGN: center' οnkeyup='updateCar(" + good.id + ")' id='num" + good.id + "' value='" + good.proNumber + "' size='5' name='num" + good.id + "' /></td>";
carHtmlStr += "<td bgColor='#ffffff' align='right'>¥" + good.proTatol + ".00元</td>";
carHtmlStr += "<td bgColor='#ffffff' align='middle'>";
carHtmlStr += "<a class='f6' href='javascript:removeProduct(" + good.id + ")'>删除</a> ";
carHtmlStr += "<a class='f6' href='javascript:addFavorite(" + good.id + ",\"" + good.no + "\",\"" + good.name + "\",\"" + good.oldPrice + "\",\"" + good.nowPrice + "\")'>放入收藏夹</a>";
carHtmlStr += "</td></tr>";
}
carHtmlStr += "</tbody>";
carHtmlStr += "</table>";
}
else
{
carHtmlStr="<div style='font-size:20px;margin-top:20;text-align:center;color:red;height:50px;'><a href='/index.aspx' style='color:red;' target='_self'>您还没有选择法器,请您认真挑选,慈悲为怀....</a></div>";
}
CarNumber();
document.getElementById("divCar").innerHTML = carHtmlStr;
document.getElementById("total1").innerHTML=totalMoney;
document.getElementById("total2").innerHTML = totalMoneyOld;
document.getElementById("totalNum").innerHTML = totalNum;
document.getElementById("jieshen").innerHTML = totalMoneyOld - totalMoney;
}
//结算中心中的购物车展示
function readCar2()
{
//debugger;
//购物车页面字符串
var carHtmlStr = "";
//购物总金额
var totalMoney = 0;
//市场价总金额
var totalMoneyOld = 0;
//商品总个数
var totalNum = 0;
var cookieValue = getCookie("shopCar");
if (cookieValue != "" && cookieValue != "undefined")
{
carHtmlStr += "<table border='0' cellspacing='1' cellpadding='5' width='99%' bgColor='#dddddd' align='center'><tbody>";
carHtmlStr += "<tr>";
carHtmlStr += "<th bgcolor='#ffffff'>商品名称</th>";
carHtmlStr += "<th bgcolor='#ffffff'>商品货号</th>";
carHtmlStr += "<th bgcolor='#ffffff'>市场价</th>";
carHtmlStr += "<th bgcolor='#ffffff'>本店价</th>";
carHtmlStr += "<th bgcolor='#ffffff'>购买数量</th>";
carHtmlStr += "<th bgcolor='#ffffff'>小计</th>";
carHtmlStr += "</tr>";
//获得购物车
var shopCar = stringToJSON(cookieValue);
for (var i = 0; i < shopCar.length; i++) {
var good = shopCar[i];
totalMoney += parseInt(good.proTatol);
totalMoneyOld += parseInt(good.oldPrice * good.proNumber);
totalNum += parseInt(good.proNumber);
carHtmlStr += "<tr>";
carHtmlStr += "<td bgcolor=#ffffff align=middle>";
carHtmlStr += "<a class='f6' href='/showinfopage.aspx?ProductId=" + good.id + "' target='_blank'>" + good.name + "</a></td>";
carHtmlStr += "<td bgcolor='#ffffff' align='middle'>" + good.no + "</td>";
carHtmlStr += "<td bgcolor='#ffffff' align='right'>¥" + good.oldPrice + "元</td>";
carHtmlStr += "<td bgcolor='#ffffff' align='right'>¥" + good.nowPrice + "元</td>";
carHtmlStr += "<td bgcolor='#ffffff' align='right'>" + good.proNumber + "</td>";
carHtmlStr += "<td bgcolor='#ffffff' align='right'>¥" + good.proTatol + "元</td></tr>";
}
carHtmlStr += "<tr><td bgcolor='#ffffff' colspan='6' align='right'>购物金额小计:共有" + totalNum + "件商品,<font class='f4_b'> ¥" + totalMoney + ".00元</font>,比市场价 <font color='blue'>¥" + totalMoneyOld + ".00元</font> 节省了 <font color='green'>¥" + (totalMoneyOld - totalMoney) + ".00元</font></td></tr>";
carHtmlStr += "</tbody>";
carHtmlStr += "</table>";
}
else {
carHtmlStr = "<div style='font-size:20px;margin-top:20;text-align:center;color:red;height:50px;'><a href='/index.aspx' target='_self'>您还没有选择法器,请您认真挑选,慈悲为怀....</a></div>";
}
document.getElementById("divCar2").innerHTML = carHtmlStr;
document.getElementById("totalPrice").innerHTML = totalMoney;
document.getElementById("totalPrice2").value = totalMoney;
document.getElementById("totalScore").innerHTML = totalMoney ;
document.getElementById("totalNumber").innerHTML = totalNum;
document.getElementById("totalNumber2").value = totalNum;
}
//读取收藏夹方法
function readFavorite() {
//收藏夹页面字符串
var favoriteHtmlStr="";
//商品总个数
var totalNum = 0;
var cookieValue = getCookie("myFavorite");
if (cookieValue != "" && cookieValue != "undefined")
{
favoriteHtmlStr += "<table border=0 cellSpacing=1 cellPadding=5 width='100%' bgcolor='#dddddd'><tbody>";
favoriteHtmlStr += "<tr align='center'>";
favoriteHtmlStr += "<th bgcolor='#ffffff' width='35%'>商品名称</th>";
favoriteHtmlStr += "<th bgcolor='#ffffff' width='30%'>价格</th>";
favoriteHtmlStr += "<th bgcolor='#ffffff' width='35%'>操作</th>";
favoriteHtmlStr += "</tr>";
//获得收藏夹
var favorite = stringToJSON(cookieValue);
totalNum=favorite.length;
for (var i = 0; i < favorite.length; i++)
{
var good = favorite[i];
favoriteHtmlStr += "<tr>";
favoriteHtmlStr += "<td bgcolor='#ffffff'>";
favoriteHtmlStr += "<a class='f6' href='/showinfopage.aspx?ProductId="+ good.id +"'>"+good.name+"("+good.no+")</a>";
favoriteHtmlStr += "</td>";
favoriteHtmlStr += "<td bgcolor='#ffffff'>本店售价:<span class=goods-price>¥"+good.nowPrice+"元</span> </td>";
favoriteHtmlStr += "<td bgcolor='#ffffff' align='center'>";
favoriteHtmlStr += "<A class=f6 href='javascript:addToCar3(" + good.id + ",\"" + good.no + "\",\"" + good.name + "\",\"" + good.oldPrice + "\",\"" + good.nowPrice + "\")'>加入购物车</A> | ";
favoriteHtmlStr += "<A class=f6 href='javascript:removeFavoriteProduct("+good.id+")'>删除</A>";
favoriteHtmlStr += "</td>";
favoriteHtmlStr += "</tr>";
}
favoriteHtmlStr += "</tbody>";
favoriteHtmlStr += "</table>";
}
else
{
favoriteHtmlStr="<div style='font-size:20px;margin-top:20;text-align:center;color:red;height:50px;'>收藏夹中尚无商品,请您继续挑选,总有一款适合您,阿弥陀佛....</div>";
}
document.getElementById("favoriteDiv").innerHTML = favoriteHtmlStr;
document.getElementById("totalF").innerHTML=totalNum;
}
//清空购物车方法
function clearCar()
{
if (window.confirm("您确定要清空购物车吗?"))
{
var cookieValue = getCookie("shopCar");
if (cookieValue != "")
{
var date = new Date();
date.setTime(date.getDate() - 99999);
setCookie("shopCar", null, -1);
}
}
readCar();
}
//删除一件商品的方法
function removeProduct(proId) {
var cookieValue = getCookie("shopCar");
//获得购物车对象
var shopCar = stringToJSON(cookieValue);
var index = shopCar.length;
if (index > 1) {
var i;
for (i = 0; i < index; i++) {
var good = shopCar[i];
//购物车中是否存在要添加的商品
if (good.id == proId) {
if (window.confirm("您确定删除此商品吗?")) {
shopCar = delArray(shopCar, i);
setCookie("shopCar", jsonToString(shopCar), 12);
alert("已经将商品移除!");
readCar();
}
break;
}
}
}
else {
clearCar();
alert("已经将购物车清空!");
readCar();
}
}
//删除一件收藏夹中商品的方法
function removeFavoriteProduct(proId) {
var cookieValue = getCookie("myFavorite");
//获得购物车对象
var favorite = stringToJSON(cookieValue);
var index = favorite.length;
if (index > 1) {
var i;
for (i = 0; i < index; i++) {
var good = favorite[i];
//购物车中是否存在要添加的商品
if (good.id == proId) {
if (window.confirm("您确定从收藏夹移除此商品吗?")) {
favorite = delArray(favorite, i);
setCookie("myFavorite", jsonToString(favorite), 12);
alert("已经将商品移除!");
readFavorite();
}
break;
}
}
}
else {
setCookie("myFavorite", jsonToString(favorite), -1);
alert("已经将收藏夹清空!");
readFavorite();
}
}
//删除一件收藏夹中商品的方法
function removeFavoriteProduct2(proId) {
var cookieValue = getCookie("myFavorite");
//获得购物车对象
var favorite = stringToJSON(cookieValue);
var index = favorite.length;
if (index > 1) {
var i;
for (i = 0; i < index; i++) {
var good = favorite[i];
//购物车中是否存在要添加的商品
if (good.id == proId)
{
favorite = delArray(favorite, i);
setCookie("myFavorite", jsonToString(favorite), 12);
readFavorite();
break;
}
}
}
else {
setCookie("myFavorite", jsonToString(favorite), -1);
readFavorite();
}
}
//删除数组元素方法
function delArray(array, index) {
if (index < 0)
return array;
else
return array.slice(0, index).concat(array.slice(index + 1, array.length));
}
/*提交订单方法*/
function SubmitFormCar() {
var frm = document.getElementById("theform");
frm.submit();
}
/** 隐藏显示提示方法 **/
function show_add2car()
{
$('add2car_po').style.display = 'block';
var obj = $('add2car');
var t = obj.offsetTop;
var l = obj.offsetLeft;
while (obj = obj.offsetParent) {
t += obj.offsetTop;
l += obj.offsetLeft;
}
$('add2car_po').style.left = l;
$('add2car_po').style.top = t + 36;
$('add2car_po').style.height = "0px";
change_add2car();
}
function change_add2car() {
if (parseInt($('add2car_po').style.height) < 60) {
$('add2car_po').style.height = parseInt($('add2car_po').style.height) + 5 + "px";
clearTimeout(timer2);
var timer2 = setTimeout("change_add2car()", 80);
timer2;
}
else {
setTimeout("hide_add2car()", 2000);
}
}
function hide_add2car() {
$('add2car_po').style.display = 'none';
}