Blogger Information
Blog 36
fans 1
comment 0
visits 26087
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
实例演示购物车 实例演示JSON常用的两个API 交互的原理与JSON的优势
早晨
Original
1150 people have browsed it

实例演示购物车

运行效果

购物车代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>购物车</title>
  8. </head>
  9. <style>
  10. /* 浏览器和标签都有默认的样式 清除默认样式 */
  11. * {
  12. margin: 0;
  13. padding: 0;
  14. }
  15. /* 清除加粗标签的默认样式 */
  16. b,
  17. strong {
  18. font-weight: normal;
  19. }
  20. /* 清除倾斜标签的默认样式 */
  21. i,
  22. em {
  23. font-style: normal;
  24. }
  25. /* 清除默认下划线 */
  26. a,
  27. u {
  28. text-decoration: none;
  29. }
  30. /* 超链接默认颜色为黑色 */
  31. a {
  32. color: #000;
  33. }
  34. /* 清除列表的默认符号样式 */
  35. ul,
  36. ol,
  37. li {
  38. list-style: none;
  39. }
  40. /* 左浮动 */
  41. .u-l {
  42. float: left;
  43. }
  44. /* 右浮动 */
  45. .u-r {
  46. float: right;
  47. }
  48. /* 清除浮动 */
  49. .clearfix {
  50. clear: both;
  51. }
  52. .cart {
  53. margin: 0 auto;
  54. width: 95%;
  55. }
  56. /* 购物车头部样式 */
  57. .cart-head {
  58. height: 70px;
  59. line-height: 70px;
  60. }
  61. .col {
  62. width: 10%;
  63. }
  64. .col-img img {
  65. width: 100px;
  66. height: 100px;
  67. }
  68. .col-name {
  69. width: 30%;
  70. }
  71. .col-price {
  72. width: 20%;
  73. padding-right: 18px;
  74. }
  75. .col-num {
  76. width: 10%;
  77. text-align: center;
  78. }
  79. .col-sum {
  80. text-align: center;
  81. color: #ff6700;
  82. }
  83. .col-active {
  84. text-align: center;
  85. }
  86. /* 购物车商品样式 */
  87. .item-box {
  88. overflow: hidden;
  89. padding: 20px 0;
  90. border-top: 1px solid #ccc;
  91. }
  92. .change-goods-num {
  93. width: 148px;
  94. height: 38px;
  95. border: 1px solid #000;
  96. }
  97. .change-goods-num a {
  98. float: left;
  99. width: 38px;
  100. height: 38px;
  101. line-height: 38px;
  102. font-size: 20px;
  103. color: #000;
  104. text-align: center;
  105. }
  106. .change-goods-num input {
  107. float: left;
  108. width: 72px;
  109. height: 38px;
  110. font-size: 18px;
  111. line-height: 38px;
  112. text-align: center;
  113. border-width: 0;
  114. }
  115. /* 底部 */
  116. .cart-foot {
  117. height: 50px;
  118. line-height: 50px;
  119. border: 1px solid #ccc;
  120. }
  121. .section-left a {
  122. margin-left: 32px;
  123. color: #757575;
  124. }
  125. .section-left span {
  126. margin-left: 16px;
  127. padding-left: 16px;
  128. color: #757575;
  129. /* border-left: 1px solid #ccc; */
  130. }
  131. .section-left i {
  132. color: #ff6700;
  133. }
  134. .settlement {
  135. margin-left: 40px;
  136. padding: 0 40px;
  137. font-size: 18px;
  138. background-color: orange;
  139. color: #fff;
  140. }
  141. .total-price {
  142. color: #ff6700;
  143. padding-right: 30px;
  144. }
  145. .total-price em {
  146. font-size: 30px;
  147. }
  148. </style>
  149. <body>
  150. <div class="cart">
  151. <!-- 购物车头部 -->
  152. <div class="cart-head clearfix">
  153. <div class="col col-check u-l">
  154. <input type="checkbox" id="all" class="check" />
  155. <label for="all">全选</label>
  156. </div>
  157. <div class="col col-img u-l">&nbsp;</div>
  158. <div class="col col-name u-l">商品名称</div>
  159. <div class="col col-price u-l">单价</div>
  160. <div class="col col-num u-l">数量</div>
  161. <div class="col col-sum u-l">小计</div>
  162. </div>
  163. <!-- 购物车列表 -->
  164. <div class="cart-list">
  165. <!-- 商品块 -->
  166. <div class="list-item">
  167. <div class="item-box">
  168. <div class="col col-check u-l">
  169. <input type="checkbox" class="check single" />
  170. </div>
  171. <div class="col col-img u-l">
  172. <img src="./images/1.jpg" alt="" />
  173. </div>
  174. <div class="col col-name u-l">
  175. 天梭(TISSOT)瑞士手表 天梭男表速敢黑武士钢带石英男士运动腕表
  176. </div>
  177. <div class="col col-price u-l">3555元</div>
  178. <div class="col col-num u-l">
  179. <div class="change-goods-num">
  180. <a href="javascript:;" class="jianhao">-</a>
  181. <input type="text" value="1" />
  182. <a href="javascript:;" class="jiahao">+</a>
  183. </div>
  184. </div>
  185. <div class="col col-sum u-l">3555元</div>
  186. </div>
  187. <div class="item-box">
  188. <div class="col col-check u-l">
  189. <input type="checkbox" class="check single" />
  190. </div>
  191. <div class="col col-img u-l">
  192. <img src="./images/2.png" alt="" />
  193. </div>
  194. <div class="col col-name u-l">
  195. 佳能(Canon)E478无线学生彩色喷墨多功能一体机
  196. </div>
  197. <div class="col col-price u-l">459元</div>
  198. <div class="col col-num u-l">
  199. <div class="change-goods-num">
  200. <a href="javascript:;" class="jianhao">-</a>
  201. <input type="text " value="1" />
  202. <a href="javascript:;" class="jiahao">+</a>
  203. </div>
  204. </div>
  205. <div class="col col-sum u-l">459元</div>
  206. </div>
  207. <div class="item-box">
  208. <div class="col col-check u-l">
  209. <input type="checkbox" class="check single" />
  210. </div>
  211. <div class="col col-img u-l">
  212. <img src="./images/3.jpg" alt="" />
  213. </div>
  214. <div class="col col-name u-l">毕亚兹 无线投屏器 4K高清</div>
  215. <div class="col col-price u-l">599元</div>
  216. <div class="col col-num u-l">
  217. <div class="change-goods-num">
  218. <a href="javascript:;" class="jianhao">-</a>
  219. <input type="text" value="1" />
  220. <a href="javascript:;" class="jiahao">+</a>
  221. </div>
  222. </div>
  223. <div class="col col-sum u-l">599元</div>
  224. </div>
  225. <div class="item-box">
  226. <div class="col col-check u-l">
  227. <input type="checkbox" class="check single" />
  228. </div>
  229. <div class="col col-img u-l">
  230. <img src="./images/4.jpg" alt="" />
  231. </div>
  232. <div class="col col-name u-l">联想ThinkBook16+笔记本电脑</div>
  233. <div class="col col-price u-l">5699元</div>
  234. <div class="col col-num u-l">
  235. <div class="change-goods-num">
  236. <a href="javascript:;" class="jianhao">-</a>
  237. <input type="text" value="1" />
  238. <a href="javascript:;" class="jiahao">+</a>
  239. </div>
  240. </div>
  241. <div class="col col-sum u-l">5699元</div>
  242. </div>
  243. </div>
  244. </div>
  245. <!-- 购物车底部 -->
  246. <div class="cart-foot">
  247. <div class="section-left u-l">
  248. <span>已选择 <i id="totalNum">0</i> 件商品</span>
  249. </div>
  250. <div class="total-price">合计: <em id="totalPrice">0</em></div>
  251. </div>
  252. </div>
  253. <script>
  254. //获取到页面中所有复选框check
  255. let check = document.querySelectorAll(".check");
  256. console.log(check.length);
  257. //获取到商品栏复选框
  258. let single = document.querySelectorAll(".single");
  259. console.log(single.length);
  260. //获取每一行商品栏
  261. let itemBox = document.querySelectorAll(".item-box");
  262. console.log(itemBox);
  263. for (let i = 0; i < check.length; i++) {
  264. //给所有复选框添加事件
  265. check[i].onclick = function (e) {
  266. //判断是否全选
  267. let count = 0;
  268. //判断全选框
  269. if (e.target.getAttribute("id") == "all") {
  270. //把全选状态赋值给每一个checkbox
  271. for (j = 0; j < single.length; j++) {
  272. single[j].checked = this.checked;
  273. }
  274. }
  275. for (let k = 0; k < single.length; k++) {
  276. if (single[k].checked) {
  277. count++;
  278. }
  279. if (count == single.length) {
  280. check[0].checked = true;
  281. } else {
  282. check[0].checked = false;
  283. }
  284. }
  285. fTotal();
  286. };
  287. }
  288. //给商品每一行添加事件
  289. for (let i = 0; i < itemBox.length; i++) {
  290. itemBox[i].onclick = function (e) {
  291. let input = this.getElementsByTagName("input")[1];
  292. switch (e.target.className) {
  293. case "jiahao":
  294. // alert('加');
  295. input.value = parseInt(input.value) + 1;
  296. fTotalSum(this);
  297. break;
  298. case "jianhao":
  299. // alert('减');
  300. input.value =
  301. parseInt(input.value) - 1 <= 1 ? 1 : parseInt(input.value) - 1;
  302. fTotalSum(this);
  303. break;
  304. }
  305. //调用 计算总数量和总价
  306. fTotal();
  307. };
  308. }
  309. // 定义一个函数计算 小计 That === this 就是商品每一行
  310. function fTotalSum(That) {
  311. //获取当前行的数量
  312. let num = That.getElementsByTagName("input")[1].value;
  313. //获取当前行的单价 取整是为了省略掉'元'字符串,方便计算
  314. let price = parseInt(That.querySelector(".col-price").innerHTML);
  315. // 最终小计值为数量乘以单价
  316. That.querySelector(".col-sum").innerHTML = num * price + "元";
  317. }
  318. //定义一个函数 方便调用总数量 和 合计
  319. function fTotal() {
  320. //获取到总价节点
  321. let totalPrice = document.getElementById("totalPrice");
  322. //总价
  323. let price = 0;
  324. //获取到总件节点
  325. let totalNum = document.getElementById("totalNum");
  326. //数量总和
  327. let Num = 0;
  328. //获取每一行商品盒子
  329. let itemBox = document.querySelectorAll(".item-box");
  330. for (let i = 0; i < itemBox.length; i++) {
  331. itemBox[i].getElementsByTagName("input")[1].value;
  332. //选中了,才拿数量和价格
  333. if (itemBox[i].getElementsByTagName("input")[0].checked) {
  334. Num += parseInt(itemBox[i].getElementsByTagName("input")[1].value);
  335. price += parseInt(itemBox[i].querySelector(".col-sum").innerHTML);
  336. }
  337. }
  338. //合并把总和数量写到标签里
  339. totalNum.innerHTML = Num;
  340. totalPrice.innerHTML = price;
  341. }
  342. </script>
  343. </body>
  344. </html>

JSON交互原理与JSON的优势

JSON是一种基于文本的数据交换方式,也叫做数据描述格式。
JSON的优点:
1) 基于纯文本,跨平台传递极其简单;
2) json是通用的,轻量化的 "数据交互格式",用于 "前后端数据通信"
3) json独立于编程语言,本质是一个格式化字符串
4) json借用了js对象字面量的语法,简洁高效,已替代了传统的xml格式
5) json不是js对象, 但它可以与js对象之间相互转换
JSON的格式/规则:
JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者均可实现。
1) JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符
2) 大括号{}用来描述一组“不同类型的无序键值对集合”,方括号[]用来描述一组“相同类型的有序数据集合”。
3) 上述两种集合中若有多个子项,则通过英文逗号,进行分隔。
4) 键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号””,以便于不同语言的解析。
5) JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null这几个,字符串必须用双引号引起来,其余的都不用。

实例演示JSON常用的两个API

运行效果

JSON常用的两个API代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>json的常用两个api</title>
  8. </head>
  9. <body>
  10. <script>
  11. console.log(
  12. "----------------------JS对象转换JSON----------------------------"
  13. );
  14. const user = {
  15. text: "Json常用api",
  16. name: "早晨",
  17. date: "2022-7-31",
  18. };
  19. console.log(user);
  20. console.log(typeof user);
  21. let json = JSON.stringify(user);
  22. console.log(json);
  23. console.log(typeof json);
  24. console.log(
  25. "----------------------JSON转换JS对象-------------------------------"
  26. );
  27. let str = `{
  28. "title": "发布的标题",
  29. "name": "发布者",
  30. "catid": "分类信息"
  31. }`;
  32. console.log(str);
  33. console.log(typeof str);
  34. let item = JSON.parse(str);
  35. console.log(item);
  36. console.log(typeof item);
  37. </script>
  38. </body>
  39. </html>
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!