整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          HTML5練習,實現全選按鈕,及統計所選擇商品的總價并輸出

          tml5實現全選按鈕,及統計所選擇商品的總價并輸出

          現有一個商品選擇列表(復選框),HTML代碼及效果如下:

          <html xmlns="http://www.w3.org/1999/xhtml">
           
          <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>無標題文檔</title>
          </head>
           
          <body>
              <div>商品列表</div>
              <input type="checkbox" name="item" value="3000" />筆記本電腦<br/>
              <input type="checkbox" name="item" value="3000" />筆記本電腦<br/>
              <input type="checkbox" name="item" value="3000" />筆記本電腦<br/>
              <input type="checkbox" name="all" οnclick="checkAll(this)" />全選<br/>
              <input type="button" value="總金額:" οnclick="getSum()" /><span id="sumid"></span>
          </body>
          </html>

          要求1:實現checkAll(this)函數。作用:通過選擇/取消選擇全選項目能夠實現對所有項目的選擇/取消。

          提示:checked 屬性規定在頁面加載時應該被預先選定的 input 元素。

          checked 屬性 與 <input type="checkbox"> 或 <input type="radio"> 配合使用。

          checked 屬性也可以在頁面加載后,通過 JavaScript 代碼進行設置。


          要求2:實現getSum()函數。作用:統計所選擇商品的總價并輸出在span區域。

          js簡單實現商品數量的選購、小計的計算以及總的價錢數、總的商品數量等一系列操作。代碼如下:

          題設的主體HTML代碼如下:(以作事例)


          1. <body>
          2. <ul id="list">
          3. <li>櫻桃<br>
          4. <input type="button" value="-" />
          5. <strong>0</strong>
          6. <input type="button" value="+" />
          7. 單價:<em>12.5元</em>
          8. 小計:<span>0元</span>
          9. </li>
          10. <li>香蕉<br>
          11. <input type="button" value="-" />
          12. <strong>0</strong>
          13. <input type="button" value="+" />
          14. 單價:<em>2.5元</em>
          15. 小計:<span>0元</span>
          16. </li>
          17. <li>火龍果<br>
          18. <input type="button" value="-" />
          19. <strong>0</strong>
          20. <input type="button" value="+" />
          21. 單價:<em>8.5元</em>
          22. 小計:<span>0元</span>
          23. </li>
          24. <li>榴蓮<br>
          25. <input type="button" value="-" />
          26. <strong>0</strong>
          27. <input type="button" value="+" />
          28. 單價:<em>28元</em>
          29. 小計:<span>0元</span>
          30. </li>
          31. <li>車厘子<br>
          32. <input type="button" value="-" />
          33. <strong>0</strong>
          34. <input type="button" value="+" />
          35. 單價:<em>14.5元</em>
          36. 小計:<span>0元</span>
          37. </li>
          38. <li>菠蘿<br>
          39. <input type="button" value="-" />
          40. <strong>0</strong>
          41. <input type="button" value="+" />
          42. 單價:<em>7元</em>
          43. 小計:<span>0元</span>
          44. </li>
          45. </ul>
          46. <p>
          47. 商品合計共:<em>0件</em>,共花費了:<em>0元</em><br />
          48. 其中最貴的商品單價是:<strong>0元</strong>
          49. </p>
          50. </body>
          • 《原生版》JavaScript代碼如下:

          1. <script>
          2. window.onload = function(){
          3. var oP = document.getElementsByTagName('p')[0];
          4. var aEm = oP.getElementsByTagName('em');
          5. var aStrong = oP.getElementsByTagName('strong')[0];
          6. var oUl = document.getElementById('list');
          7. var oLi = oUl.getElementsByTagName('li');
          8. var oStrong = oUl.getElementsByTagName('strong');
          9. var oSpan = oUl.getElementsByTagName('span');
          10. var oEm = oUl.getElementsByTagName('em');
          11. var sum = 0;
          12. var emMax = 0;
          13. for(var i=0;i<oEm.length;i++){
          14. //最大的那個單價值
          15. if(parseFloat(oEm[i].innerHTML)>emMax){
          16. emMax=parseFloat(oEm[i].innerHTML);
          17. }
          18. aStrong.innerHTML=emMax+'元';
          19. }
          20. //調用fn1()函數實現商品數量的選取
          21. for(var i=0;i<oLi.length;i++){
          22. fn1(oLi[i]);
          23. }
          24. //添加點擊事件獲取總的商品數量
          25. aEm[0].onclick = function(){
          26. for(var i=0;i<oStrong.length;i++){
          27. var a = Number(oStrong[i].innerHTML);
          28. sum+=a;
          29. aEm[0].innerHTML = sum+'件';
          30. }
          31. sum= 0;
          32. }
          33. //添加點擊事件獲取總的價錢
          34. aEm[1].onclick = function(){
          35. for(var i=0;i<oSpan.length;i++){
          36. var a = parseFloat(oSpan[i].innerHTML);
          37. sum+=a;
          38. aEm[1].innerHTML = sum+'元';
          39. }
          40. sum= 0;
          41. }
          42. function fn1(aLi){
          43. var oBtn = aLi.getElementsByTagName('input');
          44. varoStrong = aLi.getElementsByTagName('strong')[0];
          45. varoEm = aLi.getElementsByTagName('em')[0];
          46. varoSpan = aLi.getElementsByTagName('span')[0];
          47. var n1 = Number(oStrong.innerHTML);
          48. var n2 = parseFloat(oEm.innerHTML);
          49. oBtn[0].onclick = function(){
          50. n1--;
          51. if(n1<0){
          52. n1 = 0;
          53. }
          54. oStrong.innerHTML = n1;
          55. oSpan.innerHTML = n1*n2+'元';
          56. };
          57. oBtn[1].onclick = function(){
          58. n1++;
          59. oStrong.innerHTML = n1;
          60. oSpan.innerHTML = n1*n2+'元';
          61. };
          62. }
          63. }
          64. </script>

          反思:上述代碼添加點擊事件獲取商品的總價錢數以及總的商品數量,可能增加了用戶負擔。需要改進

          • 《改進版》JavaScript代碼如下:

          1. window.onload = function(){
          2. var oP = document.getElementsByTagName('p')[0];
          3. varaEm = oP.getElementsByTagName('em');
          4. varaStrong = oP.getElementsByTagName('strong')[0];
          5. var oUl = document.getElementById('list');
          6. var oLi = oUl.getElementsByTagName('li');
          7. var oStrong = oUl.getElementsByTagName('strong');
          8. for(var i=0;i<oLi.length;i++){
          9. fn1(oLi[i]);
          10. }
          11. function fn1(aLi){
          12. var oBtn = aLi.getElementsByTagName('input');
          13. varoStrong = aLi.getElementsByTagName('strong')[0];
          14. varoEm = aLi.getElementsByTagName('em')[0];
          15. varoSpan = aLi.getElementsByTagName('span')[0];
          16. var n1 = Number(oStrong.innerHTML);
          17. var n2 = parseFloat(oEm.innerHTML);
          18. //合計總價,必然要相加所有的小計
          19. function fn2(){
          20. var sum1=0;//定義一個臨時變量,用來儲存所加過的件數
          21. var sum2=0;//定義一個臨時變量,用來儲存所加過的小計
          22. var emMax=0;//定義一個臨時變量,用來比較單價的大小
          23. for(var i=0;i<oLi.length;i++){
          24. var strongs=oLi[i].getElementsByTagName("strong")[0];//獲取到所有li的數量
          25. var spans=oLi[i].getElementsByTagName("span")[0];//獲取到所有li的小計
          26. var em=oLi[i].getElementsByTagName("em")[0];//獲取到所有li的單價
          27. sum1=sum1+Number(strongs.innerHTML);
          28. sum2=sum2+parseFloat(spans.innerHTML);//合計即所有小計相加的結果,因為有小數所以要用parseFloat
          29. if(parseFloat(em.innerHTML)>emMax){//最大的那個單價值
          30. emMax=parseFloat(em.innerHTML);
          31. }
          32. }
          33. aEm[0].innerHTML=sum1+'件';
          34. aEm[1].innerHTML=sum2+'元';
          35. aStrong.innerHTML=emMax+'元';
          36. }
          37. fn2();
          38. oBtn[0].onclick = function(){
          39. n1--;
          40. if(n1<0){
          41. n1 = 0;
          42. }
          43. oStrong.innerHTML = n1;
          44. oSpan.innerHTML = n1*n2+'元';
          45. fn2();//調用合計之后的值
          46. };
          47. oBtn[1].onclick = function(){
          48. n1++;
          49. oStrong.innerHTML = n1;
          50. oSpan.innerHTML = n1*n2+'元';
          51. fn2();
          52. };
          53. }
          54. }
          55. </script>

          此時總的商品件數和商品總計會隨用戶的商品選擇進行實時改變。

          ,走進報價系統的繽紛世界

          1,什么是報價系統

          在 “新零售”,“智能制造”,“大數據分析”等概念不斷的演進下,已經廣泛的應用于商業,制造等領域。本文提到的報價系統,就屬于“新零售”的一個重要組成部份。以前,很多傳統企業都是先做市場調研,然后量產一批商品進行售賣,由于市場調研的不準備性,容易造成庫存積壓。針對這樣的問題,經過市場的實踐,提出了一種按需生產的理論,即需要什么就生產什么。

          企業若要按需生產,就會面臨著更多的挑戰。

          例如:一個快銷品公司需要一批包裝盒,聯系幾家印刷包裝廠,提出了自己包裝盒的個性化需求,然要求印刷包裝廠商進行報價。而這些印刷包裝廠,報價時會面臨如下的問題:

          a,報價涉及到產品設計,采購物料,工序工藝等多個環節,等多個部門協調后再報出一個價格,時效性 跟不上。

          b,多家工廠在競爭這個訂單,價格因素 至關重要。

          c,報價前需弄清楚產品的設計,用料,工藝,結構才能進行報價。對報價人員的專業知識要求高。

          d,報價會涉及到一個產品的方方面面,當量為1個產品時誤差較小,當量為10萬個產品,100萬個產品時,誤差就會被無限放大。

          e,報價人員很難跨行業,跨產品進行報價。

          面臨著如此多的風險與問題,稍有不慎就很難有利潤和惹上法律風險。

          2,報價系統適用于什么領域

          a,家具行業:業主訂制的家具大小,顏色,材質,工藝都不一樣,銷售人員通過軟件報價是一件非常愉悅的事。

          b,按需生產的工廠:一個制衣廠接到某網店1萬件工服的訂單,制衣廠能在一分鐘內報出價格,從時效性來講具有很大的競爭力。

          c,高端汽車訂制:如某個客戶訂制一臺房車,動力,內飾等因素直接影響到房車的價格,如果有一款專業軟件為客戶報價,體現了汽車廠商的專業性。

          d,印刷包裝行業:印刷包裝行業覆蓋的知識面廣,專業性強,利用報價軟件可以降低專業技能門檻。

          如此多的領域,行業都需要一個報價軟件,我們是否可以用IT信息化來解決這一痛點呢?答案當然是肯定的!

          二,分解一個產品BOM

          1,如何分解一個實體

          對一個產品進行報價,就不得不提產品BOM,產品BOM與生產BOM有相似性也有差異性。能否正解分解一個產品BOM,是報價的關鍵因素?,F在以一個盒子為例進行分解:

          我們可以看到這個盒子,是由5個部份組成,它們分別是 天盒,地盒,內托1,內托2,說明書組成。

          2, 把實體BOM轉換為產品BOM

          這個產品是由5個部份組成,每一個部份我都都稱之為部件,每個部件又可能由多個子部件組成。 本文以"天盒部件"為例進行說明。

          天盒:包括了天盒面紙,天盒灰板兩個子部件。天盒面紙,又需要不同的物料,不同的工序進行生產。就像一顆樹一樣,層次越深枝葉就越多。稱這種結構叫BOM樹,詳見圖列:

          三,根據產品BOM進行計價

          1,產品的總價

          產品價格 = 天盒部件價格 + 地盒部件價格 + 內托1價格 + 內托2價格 + 說明書價格 + 裝配工序費 + 包裝費 + 運輸費。

          以這個盒子為例,這個盒子的價格,是由5個部件的價格相加成成,這兒不考慮裝配,包裝,運輸費用等因素。

          2,部件價格

          要計算產品的總價,就需要計算每個部件的價格?,F在以天盒為例進行部件分解:

          天盒部件,包含天盒面板,天盒灰板兩個子部件,這兒就涉及到部件嵌套部件了,子部件還可以嵌套孫部件,以此類推,無限嵌套。

          3,部件物料(品牌規格)

          “巧婦難為無米之炊”,生產一個天盒需要原紙,油墨等物料(不考慮掛件的情況)。

          采購什么樣的原紙呢,“理文原紙”,“玖龍原紙”,在用戶沒有要求品牌的情況下,必須有一個品牌的選擇。原紙又采用什么克重,什么顏色的紙呢?又有一個紙張規格的選擇。

          油墨也是如此,品牌,規格不同,都直接決定了生產成本。

          4,部件工序(生產方式選擇)

          1,工廠能印刷這種天盒的機器有多種,比如:膠印,UV印刷,數碼印刷。選擇那種機器生產,僅憑經驗來決定面臨著具大的風險。選擇了生產機器,又對物料的上機規格有一定的約束。

          2,又比如燙金:選擇滿版燙金,還是選擇局部燙金(局部燙金的面積),那種更省錢?如此多的選擇,如此多的組合,確實讓報價員頭痛。

          從的情況來看, 生產天盒部件,不管是在物料上,還是在工序上都有相當多的選擇。這些不同的選擇就開有成了不同的價格組合。

          理論上,只要找到最低的價格組合,報出來的價格就具有絕對的競爭優勢。

          5,報價組合

          以一個產品為例:報一個“主盒”部件的價格,物料的選擇,印刷機的選擇,工序的選擇,形成了N種方案可以生產這個部件,每種方案就是一個組合,并且可以看到每個組合的明細信息。

          理論上只要選出最低報價組合,就是最優方案。

          四,報價受外圍因素的影響

          1,物料拼版的影響

          在生產盒子,家具,或者衣服的時候,展開尺寸一般都是不規則圖形。在裁剪物料的時候,拼版算法的差異會直接影響到價格。如下圖,在相同的物料面積下,左邊的矩形拼版只能拼接9個產品,右邊的不規則圖形拼版,可以拼接12個產品。顯然右邊的拼版算法更省料更省錢。

          2,損耗影響

          生產一個產品,在工序上,物料上都會產生損耗,如何控制到最低損耗,也是降低成本的一個關鍵。

          3,階梯價

          因為現在都是工業化的量產,受到打模成本原因等影響,數量越大,折扣率會越高。

          4,包裝運輸的影響

          對產品對行包裝運輸時,采用何種包裝方式,何種運輸方式可以節約成本,都是報價系統應該考慮的問題。這兒不詳細展開描述,可以聯系作者進行私下交流。

          五,技術實現

          1,技術棧介紹

          在開發這個軟件前,我想了很久,是用.net技術棧來開發,還是用java技術棧來開發??紤]到這個.net版本更新大,開發社區不完善等問題。最后我選擇了java來進行開發。

          現在已經過了炫技術的年齡了,我采用了比較簡單而穩定的技術棧來進行,如下:

          數據庫:mysql

          服務端:spring boot + mybatis + alibabacloud + redis 技術棧

          客服端:html5 + css3 + vue.js + element ui 前端框架

          2,功能演示(產品BOM維護,計算公式設定)

          1,后端主要分為【物料管理】,【工序管理】,【產品分類】,【產品BOM】管理四個模塊

          產品BOM,是可以支持無限級配置:

          每種物料,工序計價公式的定義(公式的定義:支持Javascript語法公式

          3,功能演示(報價前端)

          用戶只需要輸入產品的尺寸,工序,參數等相關屬性,報價系統即時計算出產品價格(計算時間控件在0.2秒左右)。

          具體的技術實現,另開博客分享。需了解技術實現的,可聯系作者(v信:xichji)

          六:對報價行業有需要深入了解的,可以私信。


          主站蜘蛛池模板: 福利在线一区二区| 久久99精品波多结衣一区| 无码人妻久久久一区二区三区| 97久久精品无码一区二区天美| 一区二区三区影院| 秋霞日韩一区二区三区在线观看| 精品久久一区二区三区| 白丝爆浆18禁一区二区三区 | 久99精品视频在线观看婷亚洲片国产一区一级在线 | 欧美激情国产精品视频一区二区| 国产精品一区三区| 国产产一区二区三区久久毛片国语 | 成人国内精品久久久久一区| 日韩电影在线观看第一区| 国产一区二区草草影院| 日本一道高清一区二区三区| 无码播放一区二区三区| 国产吧一区在线视频| 亚洲一区在线免费观看| 91大神在线精品视频一区| 亚洲视频在线一区二区三区| 亚洲av无码片区一区二区三区| 91久久精品一区二区| 亚洲av乱码一区二区三区| 国产99视频精品一区| 成人毛片无码一区二区| 日本免费电影一区| 国产乱码伦精品一区二区三区麻豆| 午夜无码视频一区二区三区| 久久无码精品一区二区三区| 亚洲老妈激情一区二区三区| 亚洲国产精品乱码一区二区| 99久久人妻精品免费一区 | 亚洲老妈激情一区二区三区| 无码少妇一区二区三区浪潮AV| 人妻av无码一区二区三区| 亚洲AV无码一区二区三区牲色| 濑亚美莉在线视频一区| 精品一区二区三区免费视频| 国产一区二区女内射| 中文字幕在线不卡一区二区|