js實現基礎購物車的制作

功能需求:
?? ??? ? 1.點擊添加商品按鈕會出現三個輸入框(名稱,價格,數量那三格,以及確認和取消按鈕)。
?? ??? ? 2.點擊確認后所輸入的值會自動形成一行添加到表格中
?? ??? ? 3.點擊編輯按鈕時,會重新編輯這一行的數據信息
?? ??? ? 4.點擊加號按鈕時總價和總數會變化,減號按鈕會顯示
?? ??? ? 5.點擊減號按鈕時總價和總數會變化
?? ??? ? 6.點擊刪除按鈕時這行都會被刪除,并且總價和總數會減小

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/jquery-3.7.1.min.js"></script><style>.one {display: flex;justify-content: center;align-items: center;}.one button {width: 3vh;height: 3vh;margin: 0 5px;}.two button {margin-left: 5px;}</style></head><body><table border="1px" cellpadding="5" cellspacing="0"><thead align="center"><tr><td><input type="checkbox" onclick="shoppingOne()" id="all" /></td><td>名稱</td><td>價格</td><td>數量</td><td>操作</td></tr></thead><tbody align="center"><!-- <tr><td><input type="checkbox" /></td><td>聶聶臉</td><td>¥999</td><td class="one"><button>-</button><p>1</p><button>+</button></td><td class="two"><button>編輯</button><button>刪除</button></td></tr> --></tbody><tfoot align="center"><tr><td></td><td></td><td id="allPrice">總價:¥0</td><td id="allNum">總數:0</td><td></td></tr></tfoot></table><button onclick="addShop()">添加商品</button><div class="three" style="display: none;"><input id="name" type="text" placeholder="請輸入商品名稱" /><!-- onkeyup這代碼是用戶在輸入框輸入內容時,判斷輸入的是否是數字和小數點,如果不是就會被刪除掉 --><input id="price" type="number" placeholder="請輸入商品價格"onkeyup="this.value = this.value.replace(/[^0-9\.]/g,'')" /><input id="num" type="number" placeholder="請輸入商品數量"onkeyup="this.value = this.value.replace(/[^0-9\.]/g,'')" /><button onclick="sub()">提交</button><button onclick="quxiao()">取消</button></div><script>let xb = 0;// 總價 總數let allPrice, allNum;// 用來判斷是添加還是編輯的狀態let status = true;// 假數據let data = [{"name": "長舌婦","price": "60","num": "1"}, {"name": "芭比公主","price": "22","num": "1"}, {"name": "大便超人","price": "30","num": "1"}]console.log(data);// 調用渲染函數rander();// 渲染函數function rander() {let str = '';for (let i = 0; i < data.length; i++) {str += `<tr><td><input type="checkbox" name="check" class="item" onclick="fn(${i})"/></td><td>${data[i].name}</td><td>${data[i].price}</td><td class="one"><button onclick="jian(${i})">-</button><p class="text">${data[i].num}</p><button onclick="add(${i})">+</button></td><td class="two"><button onclick="bianji(${i})">編輯</button><button onclick="deletes(${i})">刪除</button></td></tr>`;}document.getElementsByTagName('tbody')[0].innerHTML = str;}// 單let check = document.getElementsByName('check');// 全let all = document.getElementById('all');// 全選的點擊事件function shoppingOne() {if (all.checked == true) {for (let i = 0; i < check.length; i++) {check[i].checked = true;}} else {for (let i = 0; i < check.length; i++) {check[i].checked = false;}}}// 單選的點擊事件let arr = [];function fn(i) {for (let a = 0; a < check.length; a++) {if (check[a].checked == false) {all.checked = false;arr.push(data[i]);return;}}console.log(arr);all.checked = true;}// 加事件function add(i) {data[i].num++;// 數量渲染到頁面$(".text").eq(i).html(data[i].num);// 調用總價函數allPrices();}// 減事件function jian(i) {// 判斷商品數量大于1時減if (data[i].num > 1) {data[i].num--;// 數量渲染到頁面$(".text").eq(i).html(data[i].num);// 數量小于1時刪除這個商品} else {// 第一個參數是刪誰,第二個是刪幾個data.splice(i, 1);// 渲染頁面rander();}// 調用總價函數allPrices();}// 總價函數allPrices()function allPrices() {allPrice = 0;allNum = 0;for (let i = 0; i < data.length; i++) {allPrice += parseFloat(data[i].price) * parseFloat(data[i].num);allNum += parseFloat(data[i].num);}$("#allPrice").html(`總價:¥${allPrice}`);$("#allNum").html(`總數:${allNum}`);}// 添加商品點擊事件function addShop() {name.value = "";price.value = "";num.value = "";$(".three").css("display", "block");// 點擊添加商品時為truestatus = true;}// 取消點擊事件function quxiao() {// 讓輸入框隱藏$(".three").css("display", "none");// 并且清空輸入框的值name.value = "";price.value = "";num.value = "";}// 獲取三個輸入框let name = document.getElementById('name');let price = document.getElementById('price');let num = document.getElementById('num');// 編輯點擊事件function bianji(i) {$(".three").css("display", "block");// 點擊是編輯是為falsestatus = false;xb = i;name.value = data[i].name;price.value = data[i].price;num.value = data[i].num;}// 刪除事件function deletes(i) {data.splice(i, 1);rander();}// 提交的點擊事件function sub() {// 判斷三個輸入框不等于空的時候if (name.value != "" && price.value != "" && num.value != "") {// 判斷點擊的是添加商品時if (status == true) {// 往數組里面添加一個對象(對象的內容是輸入框的值)data.push({name: name.value,price: price.value,num: num.value})console.log(data);// 否則就是點擊的是編輯并且回顯} else {data[xb].name = name.value;data[xb].price = price.value;data[xb].num = num.value}// 輸入框不為空(添加成功過后渲染頁面,隱藏并且清空input;)rander();allPrices();name.value = "";price.value = "";num.value = "";$(".three").css("display", "none");// 否則就提示先填寫} else {alert("請填寫內容!");}rander();allPrices();}</script></body>
</html>

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

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

相關文章

css動態導航欄鼠標懸停特效

charset "utf-8"; /*科e互聯特效基本框架CSS*/ body, ul, dl, dd, dt, ol, li, p, h1, h2, h3, h4, h5, h6, textarea, form, select, fieldset, table, td, div, input {margin:0;padding:0;-webkit-text-size-adjust: none} h1, h2, h3, h4, h5, h6{font-size:12px…

8、資源操作 Resource

目錄 8.1、Spring Resources概述補充&#xff1a;什么是 low-level 資源&#xff1f;1. 文件系統資源2. 類路徑資源3. URL資源4. 內嵌資源5. InputStream資源6. ServletContext資源示例代碼結論 8.2、Resource接口8.3、Resource的實現類8.3.1、UrlResource訪問網絡資源1&#x…

LIO-EKF: 運行數據UrbanNav與mid360設備詳細教程

一、代碼連接 代碼下載連接&#xff1a; YibinWu/LIO-EKF: Maybe the simplest LiDAR-inertial odometry that one can have. (github.com) 編譯步驟&#xff1a; cd srcgit clone gitgithub.com:YibinWu/LIO-EKF.gitcatkin_makesource devel/setup.bash 運行步驟&#xff1a; …

為什么要保持方差為1

1.數值穩定性&#xff1a; 在機器學習和深度學習中&#xff0c;維持激活函數輸入的方差在一個合理范圍內&#xff08;如1&#xff09;是很重要的&#xff0c;這有助于防止在訓練過程中發生梯度消失或梯度爆炸的問題。如果方差過大或過小&#xff0c;經過多層網絡后輸出結果的方…

java并發處理機制

在Java中&#xff0c;并發處理機制主要是通過線程來實現的。Java提供了豐富的類和接口來支持多線程編程&#xff0c;主要集中在 java.util.concurrent 包中。以下是一些關鍵的并發處理機制&#xff1a; 1.線程創建&#xff1a;可以通過繼承 Thread 類或實現 Runnable 接口來創建…

公園【百度之星】/圖論+dijkstra

公園 圖論dijkstra #include<bits/stdc.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pii; vector<ll> v[40005]; //a、b、c分別是小度、度度熊、終點到各個點的最短距離 ll a[40005],b[40005],c[40005],dist[40005],st[40005]; void…

原碼、反碼和真值都不存在!

文章目錄 補碼的理解十進制計算二進制計算 補碼和真值換算數制轉換負數補碼轉真值負數真值轉補碼 注&#xff1a;均來自 做而論道 答主的理解。 補碼的理解 在計算機系統中&#xff0c;根本就沒有原碼和反碼&#xff0c;真值也是不存在的。在計算機系統中&#xff0c;并不使用…

java 遠程調試

1.遠程啟動時 jdk1.8-32\jre\bin\java.exe -Dfile.encodingUTF-8 -Djava.library.pathlib -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -jar local-com.yuetai.service-0.0.1-SNAPSHOT.jar --spring.config.locationapplication.yml 2.本地調試項目連接遠…

2024-06-01 Win 11 升級 TPM 2 問題

點擊 Windows 更新&#xff0c;遇到報錯&#xff0c;說是不支持 CPU 和 TPM 等&#xff0c;先是朋友給了一個鏈接文章&#xff0c;說是可以繞過&#xff0c;嘗試后&#xff0c;只是少了 CPU 的報錯&#xff0c;但 TPM 2 過不了。 后來在網上找到這篇文章&#xff0c; 先試了幾…

JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測

JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測 目錄 JCR一區級 | Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多特征分類預測分類效果基本介紹程序設計參考資料 分類效果 基本介紹 1.Matlab實現TCN-BiGRU-MATT時間卷積雙向門控循環單元多…

一維時間序列信號的小波模極大值分解與重建(matlab R2018A)

數學上稱無限次可導函數是光滑的或沒有奇異性&#xff0c;若函數在某處有間斷或某階導數不連續&#xff0c;則稱函數在此處有奇異性&#xff0c;該點就是奇異點。奇異性反映了信號的不規則程度&#xff0c;因為信號的奇異點和突變部分往往攜帶者重要信息&#xff0c;因此信號的…

JDK1.8新特性1

JDK1.8新特性1 JDK1.8新特性&#xff1a;Lambda表達式&#xff1a;使用&#xff1a;無參數無返回值&#xff1a;單參數無返回值&#xff1a;多參數無返回值&#xff1a;多參數有返回值&#xff1a; 案例&#xff1a;案例1&#xff1a;案例2&#xff1a;案例3&#xff1a; 函數式…

代碼隨想錄訓練營Day 42|力扣62.不同路徑、63. 不同路徑 II

1.不同路徑 代碼隨想錄 視頻講解&#xff1a;動態規劃中如何初始化很重要&#xff01;| LeetCode&#xff1a;62.不同路徑_嗶哩嗶哩_bilibili 代碼&#xff1a; class Solution { public:int uniquePaths(int m, int n) {// dp[i][j] 表示從起點走到坐標為i&#xff0c;j的地方…

全自動打包封箱機:解析其在產品質量與安全保障方面的作用

在當今快節奏的生產環境中&#xff0c;全自動打包封箱機以其高效、精準的特點&#xff0c;正逐漸成為生產線上的得力助手。它不僅提升了生產效率&#xff0c;更在產品質量與安全保障方面發揮著舉足輕重的作用。星派將詳細解析全自動打包封箱機在產品質量與安全保障方面的作用。…

css簡單介紹

1.css介紹 css指的是層疊樣式(Cascadingstyle sheets)&#xff0c;是用來給HTML標簽添加樣式的語言。他可以設置HTML頁面中 文字大小&#xff0c;顏色&#xff0c;對齊方式及元素的 寬高&#xff0c; 位置 等樣式。 一個完整的網頁是由HTML、CSS、Javascript三部分組成。HT…

CLIP--Learning Transferable Visual Models From Natural Language Supervision

參考&#xff1a;CLIP論文筆記--《Learning Transferable Visual Models From Natural Language Supervision》_visual n-grams模型-CSDN博客 openAI&#xff0c;2021&#xff0c;將圖片和文字聯系在一起&#xff0c;----->得到一個能非常好表達圖片和文字的模型主題&#…

網絡安全-釣魚篇-利用cs進行釣魚

一、環境 自行搭建&#xff0c;kill&#xff0c;Windows10&#xff0c;cs 二、原理 如圖所示 三、釣魚演示 首先第一步&#xff1a;打開System Profiler-分析器功能 選擇克隆www.baidu.com頁面做釣魚 之后我們通過包裝域名&#xff0c;各種手段讓攻擊對象訪問&#xff1a;h…

Java面試題:Redis1_Redis的使用場景和如何解決Redis緩存穿透問題

Redis使用場景常見問題 緩存 緩存三兄弟(穿透,擊穿,雪崩) 雙寫一致 持久化 數據過期策略 數據淘汰策略 分布式鎖 setnx,redisson 消息隊列,延遲隊列 … 解決Redis緩存穿透問題 緩存穿透問題 請求->redis緩存->mysql數據庫 當一個新請求到來時,先會訪問redi…

JVM(Java虛擬機)筆記

面試常見&#xff1a; 請你談談你對JVM的理解?java8虛擬機和之前的變化更新?什么是OOM&#xff0c;什么是棧溢出StackOverFlowError? 怎么分析?JVM的常用調優參數有哪些?內存快照如何抓取&#xff1f;怎么分析Dump文件&#xff1f;談談JVM中&#xff0c;類加載器你的認識…

前端最新面試題(基礎模塊HTML/CSS/JS篇)

目錄 一、HTML、HTTP、WEB綜合問題 1 前端需要注意哪些SEO 2 img的title和alt有什么區別 3 HTTP的幾種請求方法用途 4 從瀏覽器地址欄輸入url到顯示頁面的步驟 5 如何進行網站性能優化 6 HTTP狀態碼及其含義 7 語義化的理解 8 介紹一下你對瀏覽器內核的理解? 9 html…