這篇文章主要介紹了HTML5 本地儲存實現購物車功能的相關資料,需要的朋友可以參考下
在家休陪產假,無聊,看自己以前的項目,突然發現之前寫的購物車都是用資料庫實現的,資料庫實現購物車原則上沒什麼問題,但是需要和資料庫交互,這樣無意中降低了程式的效率。今天突發奇想,如果能用HTML5本地儲存實現,就會大大增高程式效率。當然,HTML5 本地儲存涉及到各個瀏覽器的兼容性,涉及儲存資料的大小(NKB)等問題。在這兒需要說明的是:如果你做一個不大不小的微商城項目,那麼你可以嘗試使用HTML5本地預存程序實現購物車!
本節和大家探討下HTML5本地儲存實現購物車的功能!
需要說明的是:上篇轉發了別人的部落格:HTML5本地儲存用法,本節利用上節知識實現購物車!
首先講解下大致思路:
一個商品表中,商品的ID是不相同的,在此,我們藉助商品的ID作為JSON的key值,來儲存購物車資料。
具體範例如下:
當你點擊'加入購物車'時,執行程式碼如下:
var pid = $("#hidpid").val(); var color = $("#Procolor").val(); var num2 = $("#spanNum").html(); //���� var bat = { "num": num2, "pid": pid, "pcolor": color }; var batString = JSON.stringify(bat); var keyName = "bat" + pid; for (var i = 0; i < localStorage.length; i++) { if (localStorage.key(i) == keyName) { localStorage.removeItem(keyName); } } localStorage.setItem("bat"+pid, batString);
大致講解下:
Pid:商品ID
color:商品顏色
num2:商品數量
bat:Json物件
batString:Json物件轉換成的字串
FOr循環:遍歷目前所有本地存儲,如果已存在的本地存儲則刪除,重新建立最新的本地存儲,當然,也可以不刪除,因為同名的Key值,新的會覆蓋舊的。
最後,動態存儲,所謂動態,就是本地儲存的Key值和商品ID結合了。也就是說:不同的商品,將會儲存為不同的Key值,N個商品,將會儲存為N個Json字串。最後,我們只要解析這N個不同的字串,就會得到一個完整的購物車!
嘻嘻,簡單吧!
那麼怎麼才能遍歷這N個JSON字串呢?如下:
購物車加載頁面:
$(function () { for (var i = 0; i < localStorage.length; i++) { var localValue = localStorage.getItem(localStorage.key(i)); var key = localStorage.key(i); if (key != "bat"&&key.indexOf("bat")>=0) { var obj = $.parseJSON(localValue); var pid = obj.pid; var num = obj.num; var color = obj.pcolor; console.log("商品ID:"+pid + "商品数量:" + num + "商品颜色:" + color); } } });
#大致講解:
遍歷所有本地存儲,要求key值包含bat子字符切不同於bat的本機儲存。
將Json字串轉換為Json物件
並輸入商品ID,商品數量,商品顏色。
有了商品ID,商品顏色,商品數量,那麼我們就可以使用JS或AJax來載入我們本地儲存的購物車了。具體載入方法如下:
$.ajax("...........")
或:
##JS拼接HTML在此:不做示範。 OK,截止到現在,整個HTML5本地儲存實現購物車也就講完了,如果還可以,就點個讚吧! 繼續完善這篇部落格上文提到需要用Ajax或JS拼接來完成載入功能,下面我將自己寫的AJAX貼出來! JS程式碼如下:##
$(function () { var carAry=new Array(); for (var i = 0; i < localStorage.length; i++) { var key = localStorage.key(i); var localValue = localStorage.getItem(key); if (key != "bat"&&key.indexOf("bat")>=0) { var obj = $.parseJSON(localValue); //var pid = obj.pid; //var num = obj.num; //var color = obj.pcolor; //console.log("商品ID:" + pid + "商品数量:" + num + "商品颜色:" + color); carAry.push(obj); } } //alert(carAry.length); var bat = { "carAry": carAry }; $.post("/home/GetCarInfo", bat, function (data) { $("#buycar").html(data); }); $.post("/home/GetCarInfo2", bat, function (data) { var AryStr = new Array(); AryStr = data.split('_'); $("#tops").html('<p>合计:¥' + AryStr[0] + '元</p><span>(共' + AryStr[1] + '件,不含运费)</span>') }); });
控制器部分:
[HttpPost] public string GetCarInfo(Dictionary<string,string>[] carAry) { UserCarModel model = new UserCarModel(); return model.GetCarInfo(carAry); } [HttpPost] public string GetCarInfo2(Dictionary<string, string>[] carAry) { UserCarModel model = new UserCarModel(); return model.GetCarInfo(carAry,1); }
Model部分
public string GetCarInfo(Dictionary<string, string>[] carAry,int i=0) { System.Text.StringBuilder sb = new System.Text.StringBuilder(""); double sum = 0.00; if (i == 0) { //加载购物车 if (carAry != null && carAry.Length > 0) { sb.Append("<ul>"); foreach (var item in carAry) { string pid = item["pid"]; string num = item["num"]; string pcolor = item["pcolor"]; productMol = bll.GetModel(Convert.ToInt32(pid)); string picPath = getMainpic(productMol.mainPicNum); sb.Append(@"<li class='clear-both'> <p class='proInfo'> <p class='thumb'> <img src='" + picPath + @"' / alt="HTML5實作購物車本機儲存功能" ></p> <p class='desc clear-both'> <p>" + productMol.productName + @"</p> <small>颜色分类:" + pcolor + @"</small> <span>¥" + Convert.ToDouble(productMol.shopprice).ToString("0.00") + @"</span> <p class='ctrl-p'> <p class='jian'></p> <p class='num'>" + num + @"</p> <p class='jia'></p> </p> </p> </p> </li>"); } sb.Append("</ul>"); } else { sb.Append("<ul><li onclick='gobuy2()'>请选择所需购买的商品</li><br/></ul>"); } } else { //计算总金额和商品数量 if (carAry != null && carAry.Length > 0) { foreach (var item in carAry) { string pid = item["pid"]; string num = item["num"]; productMol = bll.GetModel(Convert.ToInt32(pid)); sum += Convert.ToDouble(productMol.shopprice) * Convert.ToDouble(num); } } sb.Append(sum.ToString("0.00") + "_" + carAry.Length); } return sb.ToString(); }
效果圖如下:
#
以上是HTML5實作購物車本機儲存功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

HTML5是構建現代網頁的關鍵技術,提供了許多新元素和功能。 1.HTML5引入了語義化元素如、、等,增強了網頁結構和SEO。 2.支持多媒體元素和,無需插件即可嵌入媒體。 3.表單增強了新輸入類型和驗證屬性,簡化了驗證過程。 4.提供了離線和本地存儲功能,提升了網頁性能和用戶體驗。

H5代碼的最佳實踐包括:1.使用正確的DOCTYPE聲明和字符編碼;2.採用語義化標籤;3.減少HTTP請求;4.使用異步加載;5.優化圖像。這些實踐能提升網頁的效率、可維護性和用戶體驗。

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显著的发展。1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。2)CSS3增加了动画和过渡功能,使页面效果更加丰富。3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5不僅僅是HTML5的簡稱,它代表了一個更廣泛的現代網頁開發技術生態:1.H5包括HTML5、CSS3、JavaScript及相關API和技術;2.它提供更豐富、互動、流暢的用戶體驗,能在多設備上無縫運行;3.使用H5技術棧可以創建響應式網頁和復雜交互功能。

H5與HTML5指的是同一個東西,即HTML5。 HTML5是HTML的第五個版本,帶來了語義化標籤、多媒體支持、畫布與圖形、離線存儲與本地存儲等新功能,提升了網頁的表現力和交互性。

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5開發需要掌握的工具和框架包括Vue.js、React和Webpack。 1.Vue.js適用於構建用戶界面,支持組件化開發。 2.React通過虛擬DOM優化頁面渲染,適合複雜應用。 3.Webpack用於模塊打包,優化資源加載。

HTML5hassignificantlytransformedwebdevelopmentbyintroducingsemanticelements,enhancingmultimediasupport,andimprovingperformance.1)ItmadewebsitesmoreaccessibleandSEO-friendlywithsemanticelementslike,,and.2)HTML5introducednativeandtags,eliminatingthenee


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器