shopping_cart.html 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style>
  7. * {
  8. margin: 0;
  9. padding: 0;
  10. }
  11. body {
  12. width: 960px;
  13. margin: 20px auto;
  14. }
  15. #cart {
  16. margin: 0 auto;
  17. width: 850px;
  18. }
  19. #cart-header {
  20. height: 40px;
  21. background-color: lightgray;
  22. margin-bottom: 20px;
  23. }
  24. #cart-header div {
  25. line-height: 40px;
  26. }
  27. .left {
  28. float: left;
  29. }
  30. .right {
  31. float: right;
  32. }
  33. .w110 {
  34. width: 100px;
  35. }
  36. .ml10 {
  37. margin-left: 10px;
  38. }
  39. .w120 {
  40. width: 120px;
  41. }
  42. .w250 {
  43. width: 250px;
  44. }
  45. .center {
  46. text-align: center;
  47. }
  48. .w20 {
  49. width: 20px;
  50. }
  51. .w90 {
  52. width: 90px;
  53. }
  54. .clear {
  55. clear: both;
  56. }
  57. #cart-items>div {
  58. height: 100px;
  59. }
  60. #cart-items>div>div {
  61. line-height: 100px;
  62. }
  63. .w250 span {
  64. display: inline-block;
  65. font-size: 12px;
  66. line-height: 16px !important;
  67. }
  68. .single-item {
  69. border-bottom: 1px solid gray;
  70. }
  71. .small-button {
  72. display: inline-block;
  73. width: 20px;
  74. height: 20px;
  75. border: none;
  76. }
  77. .big-button {
  78. color: white;
  79. background-color: red;
  80. display: inline-block;
  81. width: 120px;
  82. height: 40px;
  83. border: none;
  84. font-size: 22px;
  85. }
  86. #totalCount, #totalPrice {
  87. color: red;
  88. }
  89. #totalPrice {
  90. font: bolder 20px Arial;
  91. display: inline-block;
  92. width: 150px;
  93. }
  94. #cart a {
  95. text-decoration: none;
  96. }
  97. #cart a:link, #cart a:visited, #cart a:active {
  98. color: gray;
  99. }
  100. </style>
  101. </head>
  102. <body>
  103. <div id="cart">
  104. <div id="cart-header">
  105. <div class="left w110 ml10">
  106. <input id="selectAll" type="checkbox">
  107. <label for="selectAll">全选</label>
  108. </div>
  109. <div class="left w250">商品</div>
  110. <div class="left w120 center">单价</div>
  111. <div class="left w120 center">数量</div>
  112. <div class="left w120 center">小计</div>
  113. <div class="left w120 center">操作</div>
  114. </div>
  115. <div id="cart-items">
  116. <div class="clear single-item">
  117. <div class="left w20 ml10">
  118. <input name="selectOne" type="checkbox">
  119. </div>
  120. <div class="left w90">
  121. <a href="">
  122. <img src="images/a1.jpg">
  123. </a>
  124. </div>
  125. <div class="left w250">
  126. <span>
  127. 海澜之家/Heilan Home春装商务白衬衫男修身HNCAD3A067Y 漂白(69) 漂
  128. </span>
  129. </div>
  130. <div class="left w120 center">&yen;<span class="price">138.00</span></div>
  131. <div class="left w120 center">
  132. <button class="small-button">-</button>
  133. <input class="center count" readonly type="text" size="3" value="1">
  134. <button class="small-button">+</button>
  135. </div>
  136. <div class="left w120 center">&yen;<span>138.00</span></div>
  137. <div class="left w120 center">
  138. <a href="javascript:void(0);">删除</a>
  139. </div>
  140. </div>
  141. <div class="clear single-item">
  142. <div class="left w20 ml10">
  143. <input name="selectOne" type="checkbox">
  144. </div>
  145. <div class="left w90">
  146. <a href="">
  147. <img src="images/a2.jpg">
  148. </a>
  149. </div>
  150. <div class="left w250">
  151. <span>
  152. HLA海澜之家长袖衬衫男牛津纺休闲干净透气HNEAJ1E048A浅灰
  153. </span>
  154. </div>
  155. <div class="left w120 center">&yen;<span class="price">128.00</span></div>
  156. <div class="left w120 center">
  157. <button class="small-button">-</button>
  158. <input class="center count" readonly type="text" size="3" value="1">
  159. <button class="small-button">+</button>
  160. </div>
  161. <div class="left w120 center">&yen;<span>128.00</span></div>
  162. <div class="left w120 center">
  163. <a href="javascript:void(0);">删除</a>
  164. </div>
  165. </div>
  166. <div class="clear single-item">
  167. <div class="left w20 ml10">
  168. <input name="selectOne" type="checkbox">
  169. </div>
  170. <div class="left w90">
  171. <a href="">
  172. <img src="images/a3.jpg">
  173. </a>
  174. </div>
  175. <div class="left w250">
  176. <span>
  177. HLA海澜之家牛津纺清新休闲衬衫2018春季新品质感柔软长袖衬衫男
  178. </span>
  179. </div>
  180. <div class="left w120 center">&yen;<span class="price">99.00</span></div>
  181. <div class="left w120 center">
  182. <button class="small-button">-</button>
  183. <input class="center count" readonly type="text" size="3" value="1">
  184. <button class="small-button">+</button>
  185. </div>
  186. <div class="left w120 center">&yen;99.00</div>
  187. <div class="left w120 center">
  188. <a href="javascript:void(0);">删除</a>
  189. </div>
  190. </div>
  191. </div>
  192. <div id="cart-footer">
  193. <div class="clear left">
  194. <a id="clearSelected" href="javascript:void(0);">删除选中商品</a>
  195. </div>
  196. <div class="right">
  197. <span>总共选中了<span id="totalCount">0</span>件商品</span>
  198. <span>总计: <span id="totalPrice">&yen;0.00</span></span>
  199. <button id="pay" class="big-button">去结算</button>
  200. </div>
  201. </div>
  202. </div>
  203. <script src="js/jquery.min.js"></script>
  204. <script>
  205. function calcTotal() {
  206. let amountsInput = $('.single-item input[type=text]')
  207. let pricesSpan = $('.single-item .price')
  208. let checkboxes = $('.single-item input[type=checkbox]')
  209. let totalAmount = 0
  210. let totalPrice = 0
  211. amountsInput.each(function(index) {
  212. if (checkboxes[index].checked) {
  213. let amount = parseInt($(this).val())
  214. totalAmount += amount
  215. let price = parseFloat($(pricesSpan[index]).text())
  216. let currentPrice = (price * amount).toFixed(2)
  217. $(this).parent().next().find('span').text(currentPrice)
  218. totalPrice += parseFloat(currentPrice)
  219. }
  220. })
  221. $('#totalCount').text(totalAmount)
  222. $('#totalPrice').text('¥' + totalPrice.toFixed(2))
  223. }
  224. $(function() {
  225. $('#selectAll').on('click', function(evt) {
  226. $('.single-item input[type=checkbox]').prop('checked', evt.target.checked)
  227. calcTotal()
  228. })
  229. $('.single-item button').on('click', function(evt) {
  230. let op = $(evt.target).text()
  231. if (op == '-') {
  232. let numInput = $(evt.target).next()
  233. let num = parseInt(numInput.val())
  234. if (num > 1) {
  235. numInput.val(num - 1)
  236. }
  237. } else {
  238. let numInput = $(evt.target).prev()
  239. let num = parseInt(numInput.val())
  240. if (num < 200) {
  241. numInput.val(num + 1)
  242. }
  243. }
  244. $(evt.target).parent().parent().find('input[type=checkbox]').prop('checked', true)
  245. calcTotal()
  246. })
  247. $('.single-item input[type=checkbox]').on('click', function() {
  248. calcTotal()
  249. })
  250. $('.single-item a').on('click', function(evt) {
  251. if (confirm('确定要删除该商品吗?')) {
  252. $(evt.target).parent().parent().remove()
  253. calcTotal()
  254. }
  255. })
  256. $('#clearSelected').on('click', function() {
  257. if (confirm('确定要删除选中的商品吗?')) {
  258. $('.single-item').each(function() {
  259. if ($(this).find('input:checkbox').prop('checked')) {
  260. $(this).remove()
  261. }
  262. })
  263. calcTotal()
  264. }
  265. })
  266. })
  267. </script>
  268. </body>
  269. </html>