Vue項目(購物車)

目錄

購物車效果展示:

購物車代碼:


購物車效果展示:

此項目添加、修改、刪除數據的地方都寫了瀏覽器都會把它存儲起來

下次運行項目時會把瀏覽器數據拿出來并在頁面展示

Video_20230816145047

購物車代碼:

復制完代碼,需改下script中引入的vue文件地址;可直接使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div id="app"><div><form action=""> 商品名稱:<input type="text" v-model="productName" name="productName">商品單價:<input type="text" v-model="productPrice" name="productPrice"><input type="button" value="添加商品" @click="addProduct"></form></div><ul><li v-for="(pro,index) in productList" :key="index">商品名稱:{{pro.productName}}=========商品單價:{{pro.productPrice}}&nbsp;&nbsp;&nbsp;<button type="button" @click="addProToCart(index)">添加到購物車</button><button type="button" @click="deleteProToCart(index)">刪除此商品</button></li></ul><cart :cartlist="cartList"></cart></div><template id="cartHtml"><div><table border="1"><tr><td>全選<input type="checkbox" @change="checkActive" id="isCheck"></td><td>商品名稱</td><td>商品單價</td><td>商品數量</td><td>商品價格</td></tr><tr v-for="(pro,index) in cartlist" :key="index"><td><input type="checkbox" v-model="pro.active" @change="ziCheck"></td><td>{{pro.productName}}</td><td>{{pro.productPrice}}</td><td><button type="button" @click="reduceProNum(index)">-</button>{{pro.productNum}}<button type="button" @click="addProNum(index)">+</button></td><td>{{pro.productPrice*pro.productNum}}</td></tr><tr><td colspan="3">選中的商品:{{activeNum}}/{{cartlist.length}}</td><td colspan="2">總價格:{{totalPrice}}</td></tr></table></div></template></body>
<script src="../js/vue2.7.js"></script><!--根據自己的vue文件地址填寫-->
<script>//創建一個購物車子組件var cart={template:"#cartHtml",props:["cartlist"],methods:{addProNum(index){let product =this.cartlist[index];product.productNum++localStorage.setItem('cartList', JSON.stringify(this.cartlist));},reduceProNum(index){let product =this.cartlist[index];//判斷商品數量是否為一if (product.productNum==1) {this.cartlist.splice(index,1)//為一,在數組中刪除掉//刪除完后把數據放在瀏覽器里面把key值設置為cartListlocalStorage.setItem('cartList', JSON.stringify(this.cartlist));}else{product.productNum--//減完之后把數據放在瀏覽器里面把key值設置為cartListlocalStorage.setItem('cartList', JSON.stringify(this.cartlist));}},checkActive(){if(document.getElementById("isCheck").checked){for(var i=0;i<this.cartlist.length;i++){this.cartlist[i].active=true;}//全選為true后把數據放在瀏覽器里面把key值設置為cartListlocalStorage.setItem('cartList', JSON.stringify(this.cartlist));}else{for(var i=0;i<this.cartlist.length;i++){this.cartlist[i].active=false;}//全選為false后把數據放在瀏覽器里面把key值設置為cartListlocalStorage.setItem('cartList', JSON.stringify(this.cartlist));}},ziCheck(){//當多選框變化時把數據放在瀏覽器里面把key值設置為cartListlocalStorage.setItem('cartList', JSON.stringify(this.cartlist));},},computed:{//計算購物車商品總和activeNum(){let activeProductList=this.cartlist.filter(item=>{return item.active})return activeProductList.length;},//計算購物車商品的總價格totalPrice(){let result=0;for(pro of this.cartlist){if(pro.active){result=result+pro.productPrice*pro.productNum}}return result}},updated() {//當多選框都為true全選后的多選框為truevar isActive=this.cartlist.every(c => c.active)if (isActive) {document.getElementById("isCheck").checked=true} else {document.getElementById("isCheck").checked=false}},}let app=new Vue({el:"#app",data() {return {productName:'',productPrice:'',productList:[],cartList:[]}},methods: {addProduct(){let isnameOk=true;let ispriceOk=true;if (this.productName=="") {isnameOk=false}if(isNaN(this.productPrice) || this.productPrice<=0){ispriceOk=false;}if(isnameOk && ispriceOk){//查找新增的商品是否存在商品列表中,如果不存在返回-1let findindex=this.productList.findIndex(item=>{return item.productName==this.productName})//判斷商品列表中是否存在新增的商品if(findindex==-1){//把新商品添加到商品列表中this.productList.push({productName:this.productName,productPrice:this.productPrice})//把數據放在瀏覽器里面把key值設置為productListlocalStorage.setItem('productList', JSON.stringify(this.productList));//添加完表單中的輸入框調為空this.productName='';this.productPrice='';}else{alert("此商品已經存在商品列表!")//商品已存在,給出提示}}else{alert("請輸入合適的商品名稱及單價")}},addProToCart(index){let newproduct=this.productList[index];//根據下標從商品列表里面取出商品//從購物車列表中查找,是否存在新的商品,如果找到返回購物車的商品let product= this.cartList.find(item=>{return item.productName==newproduct.productName})if (product) {//如果有對應的商品則數量加一product.productNum++}else{//沒有對應的商品就添加商品到購物車this.cartList.push({productName:newproduct.productName,productPrice:newproduct.productPrice,productNum:1,active:true})//把數據放在瀏覽器里面把key值設置為cartListlocalStorage.setItem('cartList', JSON.stringify(this.cartList));}},deleteProToCart(index){let isOk=confirm("是否刪除此商品!")if(isOk){this.productList.splice(index,1)}//把數據放在瀏覽器里面把key值設置為productListlocalStorage.setItem('productList', JSON.stringify(this.productList));}},//生命周期鉤子,部署完后執行從瀏覽器中把數據拿出來mounted(){for(pro of JSON.parse(localStorage.getItem("productList"))){this.productList.push({productName:pro.productName,productPrice:pro.productPrice});}for(pro of JSON.parse(localStorage.getItem("cartList"))){this.cartList.push({productName:pro.productName,productPrice:pro.productPrice,productNum:pro.productNum,active:pro.active});}},components:{cart},})
</script>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39992.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode每日一題_2682.找出轉圈游戲輸家

2682.找出轉圈游戲輸家 題目: n 個朋友在玩游戲。這些朋友坐成一個圈&#xff0c;按 順時針方向 從 1 到 n 編號。從第 i 個朋友的位置開始順時針移動 1 步會到達第 (i 1) 個朋友的位置&#xff08;1 < i < n&#xff09;&#xff0c;而從第 n 個朋友的位置開始順時針移…

設計模式之原型模式Prototype的C++實現

1、原型模式提出 在軟件功能設計中&#xff0c;經常面臨著“某些結構復雜的對象”的創建工作&#xff0c;且創建的對象想擁有其他對象在某一刻的狀態&#xff0c;則可以使用原型模型。原型模型是通過拷貝構造函數來創建對象&#xff0c;并且該對象擁有其他對象在某一刻的狀態。…

Docker基礎入門:鏡像、容器導入導出與私有倉庫搭建

Docker基礎入門&#xff1a;鏡像導入導出與私有倉庫搭建 一、 Docker鏡像、容器的導入和導出1.1、Docker鏡像的導出1.2、Docker鏡像的載入1.3、Docker容器的導出1.4、Docker容器的導入 二、 鏡像和容器導出和導入的區別:三、commit操作_本地鏡像發布到阿里云3.1、commit操作有關…

ppt中線材相交接的地方,如何繪畫

ppt中線材相交接的地方&#xff1a; 在ppt中繪畫線材相互交接的地方&#xff1a; 1.1繪圖工具中的“弧形” 1.2小技巧 “弧形”工具點一下&#xff0c;在ppt中如下 1.3拖動活動點進行調整圖形 1.4繪畫圓弧 1.5調整“圓弧”的大小&#xff0c;鼠標放在“黃色點”位置&#xf…

【JVM】垃圾回收算法

目錄 一、判斷對象已“死” 1.1、引用計數算法 1.2、可達性分析算法 1.3、引用的概念 二、垃圾收集算法理論 2.1、分代收集理論 三、垃圾收集算法 3.1、標記--清除算法 3.2、標記--復制算法 3.3、標記--整理算法 一、判斷對象已“死” 在堆里面存放著Java世界中幾乎所…

【數據結構】二叉搜索樹

&#x1f680; 作者簡介&#xff1a;一名在后端領域學習&#xff0c;并渴望能夠學有所成的追夢人。 &#x1f40c; 個人主頁&#xff1a;蝸牛牛啊 &#x1f525; 系列專欄&#xff1a;&#x1f6f9;數據結構、&#x1f6f4;C &#x1f4d5; 學習格言&#xff1a;博觀而約取&…

億賽通電子文檔安全管理系統任意文件上傳漏洞復現

0x01 產品簡介 億賽通電子文檔安全管理系統&#xff08;簡稱&#xff1a;CDG&#xff09;是一款電子文檔安全加密軟件&#xff0c;該系統利用驅動層透明加密技術&#xff0c;通過對電子文檔的加密保護&#xff0c;防止內部員工泄密和外部人員非法竊取企業核心重要數據資產&…

excel隔行取數求和/均值

問題描述 如圖有好多組數據&#xff0c;需要求每組數據對應位置的平均值 解決方法 SUM(IF(MOD(ROW(C$2:C$81), 8) MOD(ROW(C2), 8), C$2:C$81, 0))/10然后下拉右拉擴充即可&#xff0c;其中需要根據自身需要修改一些數據 SUM(IF(MOD(ROW(起始列$起始行:結束列$結束行), 每…

MATLAB圖論合集(一)基本操作基礎

本帖總結一些經典的圖論問題&#xff0c;通過MATLAB如何計算答案。近期在復習考研&#xff0c;以此來鞏固一下相關知識——雖然考研肯定不能用MATLAB代碼哈哈&#xff0c;不過在實際應用中解決問題還是很不錯的&#xff0c;比C易上手得多~ 圖論中的圖&#xff08;Graph&#xf…

FOSSASIA Summit 2023 - 開源亞洲行

作者 Ted 致歉&#xff1a;本來這篇博客早就該發出&#xff0c;但是由于前幾個月頻繁差旅導致精神不佳&#xff0c;再加上后續我又參加了 Linux 基金會 7/27 在瑞士日內瓦舉辦的 Open Source Congress&#xff0c;以及 7/29-30 臺北的 COSCUP23&#xff0c;干脆三篇連發&#x…

儀表板展示 | DataEase看中國:2023年中國電影市場分析

背景介紹 隨著《消失的她》、《變形金剛&#xff1a;超能勇士崛起》、《蜘蛛俠&#xff1a;縱橫宇宙》、《我愛你》等國內外影片的上映&#xff0c;2023年上半年的電影市場也接近尾聲。據國家電影專資辦初步統計&#xff0c;上半年全國城市院線票房達262億元&#xff0c;已經超…

一、計算機網絡體系結構

Content 1. 計算機網絡的組成2. 計算機網絡的功能3. 計算機網絡的分類4. 計算機網絡的性能指標5. 計算機網絡分層結構OSI模型TCP/IP模型互聯網五層模型共同點&#xff1a; 6. 計算機網絡提供的服務按三種方式分類面向連接服務和無連接服務可靠服務和不可靠服務有連接服務和無連…

服務器卡頓了該如何處理

服務器卡頓了該如何處理 當Windows系統的服務器出現卡頓問題時&#xff0c;以下是一些常見的故障排除步驟&#xff1a; 1.檢查網絡連接&#xff1a;確保服務器的網絡連接正常。檢查網絡設備、交換機、防火墻等設備&#xff0c;確保它們正常運行。嘗試通過其他計算機訪問服務器…

Flink SQL TopN

Flink SQL 對于批處理&#xff08;Batch&#xff09;和流處理&#xff08;streaming&#xff09;模式的SQL&#xff0c;都支持 Top-N 查詢。Top-N 查詢可以根據指定列排序后獲得前 N 個最小或最大值。并且該結果集還可用于進一步分析。Flink 使用 OVER 窗口子句和過濾條件的組合…

近 2000 臺 Citrix NetScaler 服務器遭到破壞

Bleeping Computer 網站披露在某次大規模網絡攻擊活動中&#xff0c;一名攻擊者利用被追蹤為 CVE-2023-3519 的高危遠程代碼執行漏洞&#xff0c;入侵了近 2000 臺 Citrix NetScaler 服務器。 研究人員表示在管理員安裝漏洞補丁之前已經有 1200 多臺服務器被設置了后門&#x…

python學習筆記——軟件安裝

目錄 1. 安裝并驗證Python環境 2. 安裝并設置Visual Studio Code編輯器 3. 設置Visual Studio Code編輯器 4.軟件安裝包 1. 安裝并驗證Python環境 首先&#xff0c;雙擊打開python安裝包。 注意?? &#xff1a; 安裝之前需要關閉殺毒軟件&#xff0c;比如360。 然后&am…

如何快速優化 CnosDB 數據庫性能與延遲:使用 Jaeger 分布式追蹤系統

在正式的生產環境中&#xff0c;數據庫的性能和延遲對于確保系統的穩定和高效運行至關重要。特別是在與 CnosDB 數據庫進行交互時&#xff0c;更深入地了解其表現變得尤為重要。這時Jaeger 分布式追蹤系統發揮了巨大的作用。在本篇博客中&#xff0c;我們將深入探討如何通過使用…

探索網絡架構的關鍵角色:六種常用的服務器類型

在今天的數字時代&#xff0c;服務器是支撐各種在線服務和應用的基石。不同類型的服務器在網絡架構中扮演著不同的角色&#xff0c;從網頁傳輸到電子郵件交換&#xff0c;再到文件傳輸和內容分發。本文將深入探討六種最常用的服務器類型&#xff0c;解釋它們的功能和重要性&…