本篇文章給大家分享的是有關(guān)怎么在layui中使用數(shù)據(jù)表格實(shí)現(xiàn)一個(gè)購物車功能,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門戶設(shè)計(jì)推廣、行業(yè)門戶平臺運(yùn)營、App定制開發(fā)、移動(dòng)網(wǎng)站建設(shè)、微信網(wǎng)站制作、軟件開發(fā)、樂山服務(wù)器托管等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)可以獲得的服務(wù)效果。
html部分
layui數(shù)據(jù)表格實(shí)現(xiàn)類購物車功能 layui數(shù)據(jù)表格實(shí)現(xiàn)類購物車功能
-
使用方法
1:單擊左邊商品列表任一商品,右邊購物車數(shù)據(jù)表格會渲染一條數(shù)據(jù),同時(shí)計(jì)算總數(shù),合計(jì)金額。
2:購物車數(shù)據(jù)表格,數(shù)量/單價(jià)改變,金額改變,底部合計(jì)金額,數(shù)量,也會跟隨改變
3:購物車數(shù)據(jù)表格,‘刪除',刪除當(dāng)前所選商品
商品列表
購物車
總數(shù):--- 合計(jì)金額:---
css部分
*{ margin: 0; padding: 0; } #guide_panel{ width: 98%; margin: 0 auto; } #row_panel{ width: 98%; height: 720px; margin: 0 auto; /*border: solid 1px red;*/ } #row_panel .table-panel{ width: 50%; height: 500px; float: left; text-align: center; } #row_panel .table-panel p{ color:#BBBBBB; } #row_panel .bottom-panel{ width: 100%; height: 40px; background: #F0F0F0; float: left; margin-top: 20px; text-align: right; } #row_panel .bottom-panel span{ line-height: 40px; font-size: 18px; }
js部分
layui.use(['layer', 'form', 'element', 'jquery', 'table', 'laydate'], function () { var form = layui.form, element = layui.element, $ = layui.$, layer = layui.layer, table = layui.table, laydate = layui.laydate; /** * 數(shù)據(jù)表格:定義表頭數(shù)據(jù) * @type {{}} */ var lan = {}; lan.cpbm = "產(chǎn)品編碼"; lan.cpjm = "產(chǎn)品簡碼"; lan.cpmc = "產(chǎn)品名稱"; lan.ckjj = "參考進(jìn)價(jià)"; lan.lpbz = "禮品標(biāo)志"; lan.spbh = "商品編號"; lan.spmc = "商品名稱"; lan.sl = "數(shù)量"; lan.dj = "單價(jià)"; lan.je = "金額"; lan.cz = "操作"; /** * 購物車數(shù)據(jù) * @type {Array} */ var goodsData = []; /** * 商品數(shù)據(jù) * @type {string} */ var GoodsDataStr = "[{\"GoodsID\":\"20190308131925\",\"GoodsName\":\"123456\",\"NameCode\":\"123456\",\"GoodsClass\":\"13659603513393152\",\"GoodsType\":1,\"Price\":20,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":null,\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0.8,\"IsDiscount\":1,\"Remark\":null,\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190308131956,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"個(gè)\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14157977930075136\",\"LAY_TABLE_INDEX\":0},{\"GoodsID\":\"20190301183528\",\"GoodsName\":\"測試2\",\"NameCode\":\"CS2\",\"GoodsClass\":\"14148378555485184\",\"GoodsType\":1,\"Price\":60,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":null,\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":null,\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190301183538,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"次\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14148379235683328\",\"LAY_TABLE_INDEX\":1},{\"GoodsID\":\"20190301183516\",\"GoodsName\":\"測試1\",\"NameCode\":\"CS1\",\"GoodsClass\":\"14148378482019328\",\"GoodsType\":1,\"Price\":50,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":null,\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":null,\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190301183522,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"次\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14148378983274496\",\"LAY_TABLE_INDEX\":2},{\"GoodsID\":\"6914068013626\",\"GoodsName\":\"紙巾\",\"NameCode\":\"zj\",\"GoodsClass\":\"13819788947571712\",\"GoodsType\":1,\"Price\":5,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":null,\"IsPoint\":1,\"PointType\":0.1,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":\"%3Cp%3Enull%3C/p%3E\",\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190217092044,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"盒\(zhòng)",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14130846812542976\",\"LAY_TABLE_INDEX\":3},{\"GoodsID\":\"20190126103924660\",\"GoodsName\":\"測試呀1\",\"NameCode\":\"CSY1\",\"GoodsClass\":\"13659654677299200\",\"GoodsType\":1,\"Price\":20,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":\"/FileSys/MemPhoto/198/20190126103959902.jpg\",\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":\"\",\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190126103959,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"次\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14099782024565760\",\"LAY_TABLE_INDEX\":4},{\"GoodsID\":\"20190124202652\",\"GoodsName\":\"是是是\",\"NameCode\":\"SSS\",\"GoodsClass\":\"13659603389480960\",\"GoodsType\":1,\"Price\":11,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":1,\"Images\":null,\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":null,\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190124202657,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"1\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14097527869279232\",\"LAY_TABLE_INDEX\":5},{\"GoodsID\":\"699\",\"GoodsName\":\"自助烤肉\",\"NameCode\":\"ZZKR\",\"GoodsClass\":\"13819785158099968\",\"GoodsType\":1,\"Price\":50,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":50,\"Images\":\"/FileSys/MemPhoto/198/20190114153729870.jpg\",\"IsPoint\":1,\"PointType\":800,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":null,\"IsDelete\":0,\"IsGift\":0,\"ExchangePoint\":0,\"CreateTime\":20190114153730,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":null,\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14083087561366528\",\"LAY_TABLE_INDEX\":6},{\"GoodsID\":\"20190114153056\",\"GoodsName\":\"積分衣服\",\"NameCode\":\"JFYF\",\"GoodsClass\":\"13819785158099968\",\"GoodsType\":1,\"Price\":0,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":\"/FileSys/GoodsIMG/198/20190114154132974.png\",\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":\"%3Cp%3Enull%3C/p%3E\",\"IsDelete\":0,\"IsGift\":1,\"ExchangePoint\":500,\"CreateTime\":20190114153221,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"1\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14083082487470080\",\"LAY_TABLE_INDEX\":7},{\"GoodsID\":\"20190114152247\",\"GoodsName\":\"積分褲子\",\"NameCode\":\"JFKZ\",\"GoodsClass\":\"13819785158099968\",\"GoodsType\":1,\"Price\":0,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":null,\"IsPoint\":1,\"PointType\":800,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":null,\"IsDelete\":0,\"IsGift\":1,\"ExchangePoint\":0,\"CreateTime\":20190114152321,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"1\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14083073653020672\",\"LAY_TABLE_INDEX\":8},{\"GoodsID\":\"20190114151536\",\"GoodsName\":\"褲子\",\"NameCode\":\"KZ\",\"GoodsClass\":\"13819785158099968\",\"GoodsType\":1,\"Price\":0,\"PriceUnit\":0,\"PriceNum\":0,\"XPrice\":0,\"Images\":null,\"IsPoint\":0,\"PointType\":0,\"MinDiscount\":0,\"IsDiscount\":0,\"Remark\":null,\"IsDelete\":0,\"IsGift\":1,\"ExchangePoint\":500,\"CreateTime\":20190114151658,\"CompID\":198,\"ShopID\":\"237\",\"MasterID\":\"237\",\"MeasureUnit\":\"1\",\"Specials\":0,\"IsShelf\":0,\"FreightTemplateID\":null,\"Id\":\"14083067377571840\",\"LAY_TABLE_INDEX\":9}]"; var GoodsData = JSON.parse(GoodsDataStr); /** * 頁面加載時(shí)執(zhí)行 */ $(function () { console.table(GoodsData); /** * List1數(shù)據(jù)表格渲染(商品列表) */ var ListTable1 = table.render({ data:GoodsData, elem: '#List1', cellMinWidth: 95, //height: 'full-190', height: '460', minheight:430, page: true, limit: 10, limits: [10, 20, 30, 40], done: function (res) { if (res.rows && res.rows.length == 1) { var data = res.rows[0]; GoodsList_onDblClickRow(data); } }, cols: [ [ { field: 'GoodsID', title: lan.cpbm, align: 'left' }, { field: 'NameCode', title: lan.cpjm, align: 'left' }, { field: 'GoodsName', title: lan.cpmc, align: 'left' }, { field: 'XPrice', title: lan.ckjj, align: 'right', templet: function (d) { return "¥" + d.XPrice + ""; } }, { field: 'IsGift', title: lan.lpbz, align: 'center', templet: function (d) { var _fm = ''; _fm += d.IsGift == 1 ? '' : ''; _fm += ""; return _fm; } } ] ] }); /** * List2數(shù)據(jù)表格渲染(購物車) */ var ListTable2 = table.render({ data:goodsData, elem: '#List2', cellMinWidth: 95, //height: 'full-190', height: '460', minheight:430, page: true, limit: 10, limits: [10, 20, 30, 40], cols: [ [ { field: 'GoodsID', title: lan.spbh }, { field: 'GoodsName', title: lan.spmc }, { field: 'Qty', title: lan.sl, edit: 'text' }, { field: 'Price', title: lan.dj, edit: 'text' }, { field: 'Money', title: lan.je }, { title: lan.cz, align: "center", fixed: 'right', templet: function (d) { var html = '刪除 '; return html; } } ] ], done: function (res) { $("#List2").siblings().find("td").each(function () { if ($(this).attr("data-edit") == 'text') { var num = $(this).find("div").text(); $(this).append('') } }) } }); /** * 監(jiān)聽商品列表'行'單擊事件 */ table.on('row(List1)', function (obj) { var data = obj.data; var isNew = true; var vKey = data.GoodsID; //產(chǎn)品編碼 //遍歷購物車,是否存在產(chǎn)品;存在,數(shù)量+1 計(jì)算金額 for (var i = 0; i < goodsData.length; i++) { var tRow = goodsData[i]; if (vKey == tRow.GoodsID) { tRow.Qty = parseInt(tRow.Qty) + 1; tRow.Money = accMul(tRow.Qty, tRow.Price,2); isNew = false; break; } } //判斷當(dāng)前數(shù)據(jù)是否為新增數(shù)據(jù) if (isNew) { var tmpRow = {}; tmpRow.Id = data.Id; tmpRow.GoodsID = data.GoodsID; tmpRow.GoodsName = data.GoodsName; tmpRow.Price = data.XPrice; tmpRow.Qty = 1; tmpRow.Money =(data.XPrice).toFixed(2); tmpRow.SalesCode = ""; goodsData.push(tmpRow); } //console.log(goodsData); /** * 開始刷新購物車 */ shoppingCartRefresh(); }); /** * 監(jiān)聽購物車行刪除事件 */ table.on('tool(List2)', function (obj, index) { var data = obj.data; if (obj.event === 'delet') { for (var i = 0; i < goodsData.length; i++) { var gd = goodsData[i]; if (data.GoodsID == gd.GoodsID) { goodsData.splice(i, 1); } } /** * 開始刷新購物車 */ shoppingCartRefresh(); } }); /** * 購物車行編輯事件 */ table.on('edit(List2)', function (obj) { var data = goodsData; for (var i = 0; i < data.length; i++) { if (obj.data.Id == data[i].Id) { if (isNaN(data[i].Qty) || data[i].Qty < 0) { data[i].Qty = 0; } if (isNaN(data[i].Price) || data[i].Price < 0) { data[i].Price = 0; } data[i].Qty = Number(data[i].Qty); //數(shù)量:聲明數(shù)字類型 data[i].Price = parseFloat(data[i].Price).toFixed(2); //金額:聲明小數(shù)類型 data[i].Money = accMul(data[i].Qty, data[i].Price,2); //計(jì)算總金額:保留2位小數(shù) } } /** * 開始刷新購物車 */ shoppingCartRefresh(); }); /** * 購物車刷新函數(shù) */ function shoppingCartRefresh(){ var TotalQty = 0; var TotalMoney = 0; //數(shù)據(jù)表格重載 ListTable2.reload({ data: goodsData }); //計(jì)算總數(shù) 合計(jì)金額 for (var i = 0; i < goodsData.length; i++) { TotalQty = accAdd(TotalQty, goodsData[i].Qty); TotalMoney = (accAdd(TotalMoney, parseFloat(goodsData[i].Money))).toFixed(2); } // console.log("總數(shù)量:"+TotalQty); // console.log("總金額:"+TotalMoney); $("#RechargeCount_TotalQty").html(TotalQty); $("#RechargeCount_TotalMoney").html(TotalMoney); } /** * 小數(shù)加法 * @param arg1 * @param arg2 * @returns {number} */ function accAdd(arg1,arg2){ var r1,r2,m; try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0} try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0} m=Math.pow(10,Math.max(r1,r2)); return (arg1*m+arg2*m)/m; } /** * 小數(shù)乘法 * @param arg1 * @param arg2 * @param fix * @returns {*} */ function accMul(arg1,arg2,fix) { if(!parseInt(fix)==fix) { return; } var m=0,s1=arg1.toString(),s2=arg2.toString(); try{m+=s1.split(".")[1].length}catch(e){} try{m+=s2.split(".")[1].length}catch(e){} if(m>fix){ return (Math.round(Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m-fix))/Math.pow(10,fix)); }else if(m<=fix){ return (Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)).toFixed(fix); }else{ return (arg1*arg2).toFixed(fix); } } }); });
以上就是怎么在layui中使用數(shù)據(jù)表格實(shí)現(xiàn)一個(gè)購物車功能,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。