第170天:面向对象-产品详情页开发

简介: 产品详情页开发思路产品详情页分为产品和和购物车2个对象1、产品首先分析产品的属性    产品属性有:产品名称、产品价格、团购价、购买数量、产品描述、产品图片等其次绑定产品信息  (1)绑定基本信息(bindBasic)     $('#pname').

产品详情页开发思路

产品详情页
分为产品和和购物车2个对象

1、产品

  • 首先分析产品的属性

    产品属性有:产品名称、产品价格、团购价、购买数量、产品描述、产品图片等

  • 其次绑定产品信息

  (1)绑定基本信息(bindBasic
    $('#pname').html(this.name);
    $('#price').html(this.price);
    ...
  (2)绑定图片列表(bindImages
    找产品图片部分的html代码
    拼接字符串
    var str='';
    将动态添加的部分改为变量形式 ,注意逗逗加加('+变量+')
    拼接完后将字符串添加到对应的位置

2、购物车

  • 购物车的属性

    购物车产品个数、产品总价格、产品列表

  • 购物车的方法

  (1)结算 计算总价格
  (2)获取产品总数
  (3)绑定基本信息 个数+总价格
  (4)绑定产品列表
    找到代码,拼接字符串,添加到相应位置


3、index.js

  • 创建产品实例

  var product = new Product();
  设置product的属性值,图片采用数组存储
  绑定基本信息 product.bindBasic();
  绑定图片 product.bindImages();

  • 绑定事件

  给加入购物车按钮添加点击事件
  点击时,应该更新购物车,并重新绑定购物车,触发相应事件

  • 创建购物车实例

  设置购物车的属性值
  再绑定购物车基本信息、购物车里面的产品列表

下面是详细代码:

1、product.js

 1 /**
 2  * Created by Administrator on 2018/2/4.
 3  */
 4 
 5 function Product(){
 6     //名称
 7     this.name="";
 8     //原价
 9     this.price=0;
10     //团购价
11     this.groupPrice=0;
12     //数量
13     this.buySum=0;
14     //描述
15     this.description="";
16     //图片
17     this.images=[{small:'',big:''},{small:'',big:''},{small:'',big:''}];
18 }
19 
20 Product.prototype={
21     //绑定基本信息
22     bindBasic:function(){
23         $('#pname').html(this.name);
24         $('#price').html(this.price);
25         $('#groupPrice').html(this.groupPrice);
26         $('#buyCount').html(this.buySum);
27         $('#description').html(this.description);
28     
30     },
31     //绑定图片列表
32     bindImages:function(){
33         //拼接
34         var str='';
35         for(var i=0;i<this.images.length;i++){
36             str+='<li>';
37             str+='<img class="etalage_thumb_image" src="'+this.images[i].small+'" class="img-responsive" />';
38             str+='<img class="etalage_source_image" src="'+this.images[i].big+'" class="img-responsive" />';
39             str+='</li>';
40 
41         }
42 
43         $('.etalage').html(str);
44 
45         $('#etalage').etalage({
46             thumb_image_width: 250,
47             thumb_image_height: 300
48         });
49 
50     }
51 }

2、cart.js

 1 /**
 2  * Created by Administrator on 2018/2/4.
 3  */
 4 function Cart(){
 5     //购物车的产品个数
 6     this.sum=0;
 7     //总价格
 8     this.allPrice=0;
 9     //产品列表
10     this.products=[];
11 }
12 
13 Cart.prototype={
14     //结算 计算总价格
15     accountClose:function(){
16         var sum=0;
17         for(var i=0;i<this.products.length;i++){
18             sum+=this.product[i].price;
19         }
20         return sum;
21     },
22 
23     //获取产品总数
24     getSum:function(){
25         return this.products.length;
26     },
27 
28     //绑定基本信息 个数+总价格
29     bindBasic:function(){
30         //个数
31         $('.cartsum').html(this.getSum());
32         //总价格
33         $('.allPrice').html(this.accountClose());
34     },
35 
36     //绑定列表
37     bindList:function(){
38         var str='';
39         for(var i=0;i<this.products.length;i++){
40             str+='<div class="cart_box">';
41             str+='<div class="message">';
42             str+='<div class="alert-close"></div>';
43             str+='<div class="list_img"><img src="'+this.products[i].images.small+'" class="img-responsive" alt=""/></div>';
44             str+='<div class="cart_box">';
45         }
46 
47       $('.shopping_cart').html(str);
48 
49 
50 
51     }
52 
53 
54 
55 }

3、index.js

 1 /**
 2  * Created by Lenovo on 2016/1/3.
 3  */
 4 
 5 
 6 /* 使用对象 搭积木*/
 7 
 8 /*绑定产品*/
 9 
10 window.onload =function(){
11 
12     /*实例化一个对象:为什么只有一个实例:再次理解抽象和具体:类和实例的区别*/
13     var product =  new Product();
14     product.name='HM休闲服登山包2018';
15     product.description='今天心情好,很好,非常好,马上过年了,真的真的真的好开心!';
16     product.price=194;
17     product.groupPrice=180;
18     product.buySum=20000;
19     /*数据结构:变量 数组(分成两种) json字典*/
20     product.images=[
21         {small:'../images/s11.jpg',big:'../images/s11.jpg'},
22         {small:'../images/s12.jpg',big:'../images/s12.jpg'},
23         {small:'../images/s13.jpg',big:'../images/s13.jpg'}
24     ];
25 
26 
27     /*面向对象编程*/
28     /*使用*/
29 
30     //现在:先宏观思考怎么做,然后再写细节
31 
32     /*绑定基本信息*/
33     product.bindBasic();
34 
35     /*绑定图片*/
36     product.bindImages();
37 
38 
39 //绑定事件
40 $('#btnaddcart').click(function(){
41     //购物车新增一个产品
42     cart.products.push(product);
43     //更新购物车 - 重新绑定购物车
44     cart.bindBasic();
45     cart.bindList();
46     //滑动到最顶部
47     $(window).scrollTop(0);
48 });
49 
50 
51 
52     /*绑定购物车*/
53 
54     var cart = new Cart();
55     cart.sum=10;
56     cart.allprice=8000;
57 
58     //假设购物车中已经有三个产品
59     cart.products.push(product);
60     cart.products.push(product);
61     cart.products.push(product);
62 
63     //绑定基本信息
64     cart.bindBasic();
65     //绑定购物车里面的产品列表
66     cart.bindList();
67 }

运行效果:

 

相关文章
|
2天前
|
云安全 人工智能 自然语言处理
AI说的每一句话,都靠谱吗?
阿里云提供AI全栈安全能力,其中针对AI输入与输出环节的安全合规挑战,我们构建了“开箱即用”与“按需增强”相结合的多层次、可配置的内容安全机制。
|
6天前
|
存储 人工智能 安全
AI 越智能,数据越危险?
阿里云提供AI全栈安全能力,为客户构建全链路数据保护体系,让企业敢用、能用、放心用
|
8天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
3天前
|
消息中间件 安全 NoSQL
阿里云通过中国信通院首批安全可信中间件评估
近日,由中国信通院主办的 2025(第五届)数字化转型发展大会在京举行。会上,“阿里云应用服务器软件 AliEE”、“消息队列软件 RocketMQ”、“云数据库 Tair”三款产品成功通过中国信通院“安全可信中间件”系列评估,成为首批获此认证的中间件产品。此次评估覆盖安全可信要求、功能完备性、安全防护能力、性能表现、可靠性与可维护性等核心指标,标志着阿里云中间件产品在多架构适配与安全能力上达到行业领先水平。
301 192
|
3天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
343 165
|
2天前
|
开发者
「玩透ESA」ESA启用和加速-ER在加速场景中的应用
本文介绍三种配置方法:通过“A鉴权”模板创建函数并设置触发器路由;在ESA上配置回源302跟随;以及自定义响应头。每步均配有详细截图指引,帮助开发者快速完成相关功能设置,提升服务安全性与灵活性。
302 2
|
7天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
457 93