亚洲福利网站,国产精品久久国产三级国电话系列 ,欧美久久久久久,蜜桃av在线

IT培訓(xùn)-高端面授IT培訓(xùn)機(jī)構(gòu)
云和教育:云和數(shù)據(jù)集團(tuán)高端IT職業(yè)教育品牌
  • 國(guó)家級(jí)
    全民數(shù)字素養(yǎng)與技能培訓(xùn)基地
  • 河南省
    第一批產(chǎn)教融合型企業(yè)建設(shè)培育單位
  • 鄭州市
    數(shù)字技能人才(碼農(nóng))培養(yǎng)評(píng)價(jià)聯(lián)盟

如何使用javascript實(shí)現(xiàn)電商類(lèi)項(xiàng)目中的購(gòu)物車(chē)功能?

  • 發(fā)布時(shí)間:
    2019-10-14
  • 版權(quán)所有:
    云和教育
  • 分享:

在電商類(lèi)項(xiàng)目中,購(gòu)物車(chē)可以說(shuō)是基本要求了。購(gòu)物車(chē)的綜合功能能以及邏輯功能對(duì)學(xué)習(xí)階段的人來(lái)說(shuō)都能或多或少的提升js知識(shí),鍛煉論及能力。購(gòu)物車(chē)中主要分為全選、店鋪、單選、價(jià)格幾大類(lèi)。javascript實(shí)現(xiàn)購(gòu)物車(chē)功能,每個(gè)人的編寫(xiě)邏輯風(fēng)格不同,在此使用以下布局方式。

配圖1 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

其中全選的input放在div.all中單放,使用dl包裹一個(gè)店鋪中的所有商品,可以都多個(gè)dl包裹不同的店鋪。在每個(gè)dl中用dt包裹店鋪信息并放置一個(gè)input方便實(shí)現(xiàn)選中店鋪時(shí)勾選該店鋪內(nèi)所有商品。之后用dd包裹當(dāng)前商鋪下對(duì)應(yīng)的商品,此處頁(yè)面并不完善只是加了價(jià)格以及一個(gè)選擇框來(lái)相對(duì)應(yīng)實(shí)現(xiàn)單選效果使用。

關(guān)于效果的順序可以隨意,可以從點(diǎn)擊全選開(kāi)始。首先使用jquery選中div.all中的input標(biāo)簽添加一個(gè)change或者click事件都可以,也可以通過(guò)時(shí)間監(jiān)聽(tīng)on來(lái)添加。監(jiān)聽(tīng)當(dāng)全選對(duì)應(yīng)的input狀態(tài)發(fā)生更改時(shí),讓所有input的狀態(tài)跟當(dāng)前input的狀態(tài)一致。

配圖2 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

每次更改狀態(tài)后都可以直接循環(huán)獲取所有選中dd中input所對(duì)應(yīng)的商品價(jià)格相加。若是設(shè)置有商品個(gè)數(shù)需要用個(gè)數(shù)乘上相對(duì)應(yīng)的商品價(jià)格再相加,設(shè)置給dt后對(duì)應(yīng)的價(jià)格。在循環(huán)得到所有dt的價(jià)格相加設(shè)置給總價(jià)。

配圖3 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

如果點(diǎn)擊是取消全選,也會(huì)同時(shí)計(jì)算店鋪后總價(jià)為0,從而計(jì)算商品總價(jià)為0。當(dāng)點(diǎn)擊店鋪中對(duì)應(yīng)的input時(shí),需要設(shè)置當(dāng)前店鋪下對(duì)應(yīng)的所有商品狀態(tài)跟當(dāng)前input狀態(tài)一致。想要獲取當(dāng)前店鋪對(duì)應(yīng)的商品可以根據(jù)this當(dāng)前標(biāo)簽選擇使用jquery篩選中對(duì)應(yīng)的查找api來(lái)找到并設(shè)置。

配圖4 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

設(shè)置狀態(tài)后需要根據(jù)當(dāng)前店鋪下所有選擇商品的價(jià)格和來(lái)設(shè)置店鋪后對(duì)應(yīng)的價(jià)格。再?gòu)男芦@取所有店鋪后邊的價(jià)格計(jì)算和設(shè)置給總價(jià)格。此處計(jì)算所有店鋪對(duì)應(yīng)的價(jià)格和這個(gè)效果在全選中也有使用可以選擇封裝調(diào)用。

配圖5 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

同時(shí)會(huì)出現(xiàn)一個(gè)問(wèn)題,若是選中所有店鋪后,全選的狀態(tài)并沒(méi)有改變。所有需要在點(diǎn)擊商鋪時(shí)同時(shí)判斷一下是否是素有店鋪都是選中狀態(tài),如果是則需要設(shè)置全選input的狀態(tài)跟隨店鋪更改。

配圖6 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

最后當(dāng)單點(diǎn)需要設(shè)置給每一個(gè)商品所對(duì)應(yīng)的input按鈕。當(dāng)點(diǎn)擊單選按鈕時(shí),需要獲取當(dāng)前商品所對(duì)應(yīng)的價(jià)格設(shè)置給店鋪后對(duì)應(yīng)的那個(gè)價(jià)格。之前編寫(xiě)的效果中有獲取每個(gè)店鋪下對(duì)應(yīng)所有選中商品價(jià)格的和,可以選擇封裝多次調(diào)用。在設(shè)置店鋪價(jià)格更改時(shí)需要同時(shí)更改總價(jià)的值。上方代碼也有重復(fù),可以封裝成函數(shù)多次分別調(diào)用。

配圖7 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

點(diǎn)擊商品后若是使當(dāng)前店鋪下所有商品選中,同時(shí)也需要操作店鋪后對(duì)應(yīng)的input選中,如果不是所有都選中的話需要設(shè)置店鋪對(duì)應(yīng)的不選中。

配圖8 JS購(gòu)物車(chē)功能的實(shí)現(xiàn).jpg

當(dāng)然在更改了店鋪的狀態(tài)時(shí)就需要再此更改一下全選的選中狀態(tài),調(diào)用一下已經(jīng)封裝好的函數(shù)。至此購(gòu)物車(chē)的基本效果已經(jīng)成型。

主站蜘蛛池模板: 沿河| 靖宇县| 临邑县| 绥宁县| 昔阳县| 原平市| 保靖县| 冷水江市| 夹江县| 陇南市| 北票市| 禹州市| 塘沽区| 通海县| 罗甸县| 辽宁省| 灵武市| 台州市| 鹤壁市| 建德市| 青阳县| 永修县| 苗栗市| 葫芦岛市| 延边| 将乐县| 文成县| 调兵山市| 康平县| 萨嘎县| 拜城县| 贺州市| 铁力市| 中江县| 吴江市| 万安县| 桦南县| 建宁县| 岳阳市| 乌拉特中旗| 永德县|