Javascript购物车 操作Cookie存取Json

来源:互联网 发布:c多线程编程实战 pdf 编辑:程序博客网 时间:2024/05/23 14:44

在做 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;    }}//添加商品至购物车方法1function 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();}//添加商品至购物车方法2function 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();}//添加商品至购物车方法3function 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' onkeyup='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';}            


 

原创粉丝点击