前端实现商品属性选择

一、效果图

二、后台返回的数据格式

[{
    "saleName": "颜色",
    "dim": 1,
    "saleAttrList": [{
            "imagePath": null,
            "saleValue": "白色",
            "skuIds": [
                1, 2, 3
            ]
        },
        {
            "imagePath": null,
            "saleValue": "黑色",
            "skuIds": [
                5, 6
            ]
        }
    ]
}]

dim:代表维度,saleAttrList:代表该维度下商品标签的集合,skuIds:代表当前标签下同类商品skuId。

三、实现

一、进入商品详情页面

  1.获取后台数据,添加状态,当前sku为选中状态

  2.遍历计算出,同类sku对应的标签数组

    

  3.求所有存在的路径的组合的子集,生成所有存在的路径表

/**
         * 求幂积
         * @param {Object} arr
         */
        function powerset(arr) {
            var ps = [[]];
            for (var i=0; i < arr.length; i++) {
                for (var j = 0, len = ps.length; j < len; j++) {
                    ps.push(ps[j].concat(arr[i]));
                }
            }
            return ps;
        }

  

  4.把已选择的元素添加到一个数组,当用户所有维度都选择后,才进行跳转sku,否则提示,有未选择的维度。

二、用户选择商品属性的点击事件

  1.如果不可选,return

  2.选中

    至同一dim其他为未选中

    不同dim中如果选中,则不改变转态,其他设置为未选中

  3.未选中

    重置所有dim中如果选中,则不改变转态,其他设置为未选中

  4.用户所选路径,去查询路径表,如果当前路径不存在,则将当前元素置灰为不可选状态

  5.确定唯一sku,跳转

参考:Sku 多维属性状态判断算法

原文地址:https://www.cnblogs.com/soul-wonder/p/9732921.html

时间: 2024-08-08 20:27:45

前端实现商品属性选择的相关文章

iOS开发 - 公司项目中一个类似淘宝的商品属性选择页的实现

废话不多说,有一点:( 这里公司项目 本来是用button通过计算宽度来实现,但是当标签过多时,大量的button会影响效率,正解还是乖乖使用collectionview实现 )直接上效果图: 代码在我的github:https://github.com/caijunrong/CommodityTagView.git

选择商品属性

//遍历商品属性IDpublic void traverseAttribute(String idName,String ID){ int count = 0,sign = 0; for(int i=1;i<=30;i+=2){ //属性 ID<=30时 01,03,05,..... if (i<10){ idName = ID+"0" + i;} else { idName = ID + i;} LogUtil.i("ID: " + idName

Vue实现仿淘宝商品详情属性选择的功能

Vue实现仿淘宝商品详情属性选择的功能 2018年09月07日 17:13:35 yx_cos 阅读数:278 先看下效果图:(同个属性内部单选,属性与属性之间可以多选) 主要实现过程: 所使用到的数据类型是(一个大数组里面嵌套了另一个数组)具体格式如下: attrAndValuees: [   {   'attrId': 1,   'attrName': '味道',   'valuees': [   {   'attrId': 1,   'value': '橘子味'   },   {   'a

仿京东淘宝商品详情页属性选择js效果

在网上找了好久发现都不符合要求就自己摸索写了一个,用到了linq.js这个linq to js 扩展,不然用纯JS遍历json查询要死人啊 效果图: 代码直接拷贝就可以运行: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="http://libs.baidu.com/jquery/

中小型电商系统商品属性设计与实现

这两年做过不少的小型电商系统,有的卖衣服,有的卖鞋子,有的卖电器,甚至还有些卖虚拟服务的.不同商品的属性千差万别,为了减少以后卖xxx的电商系统的工作量,特将属性系统做成通用版的. 设计思路如下: 1.可自定义的无限级商品类别. 2.各类别可自定义属性,属性的类型有:普通文本.数字.价格.单项选择.多项选择.日期.文本域.富文本.图片.布尔值等,添加商品时自动加载所需的组件. 3.支持公共属性. 4.支持属性继承,即子类别自动继承父类别的属性,并支持覆盖父类别同名属性. 5.支持属性值验证,添加

ecshop 属性表(attribute)商品属性表(goods_attr)货品表(prduct) 商品数量的联系

一个商城的商品属性存放在属性表(attribute)里 ,每个商品对应的属性在goods_attr里 goods_attr与(attribute)想关联,商品表里有商品数量的字段goods_number为什么有这个货品表呢? 因为 某件商品有多种属性的时候,那这个商品就成为了货品,也就是说不同属性的相同商品应该也存在差异,所以当设置商品属性的attr_type=1(表示单选属性)的时候,在 前台include/lib_comment.php 函数sort_goods_attr_id_array将

商品属性管理【把商品和属性关联起来】

在添加商品的表单中制作一个类型的下拉框 <!-- 商品属性 --> <table style="display:none;" width="90%" class="tab_table" align="center"> <tr><td> 商品类型: <?php buildSelect('Type','type_id','id','type_name'); ?> <

后台商品属性组合小例子

今天2016.12.23马上圣诞节了,先祝大家圣诞快乐.最近,一直在忙公司购物webApp项目,用到技术vue vue-router等(等到项目上线后拿出来分享下).这两天穿插着后台让帮忙做一个关于商品属性组合方面东西.今天交付给后台了,距离下班的这段时间时间把写的东西分享出来.当然代码里边还有很多可以优化的地方,后期如果有时间再拿出来说. 话不多说,先把结果图拿出来看下,知道是个什么东西.当然可能有些我说的不好,可以再详细的看下代码. 哎呦我去,公司这网速传了老半天. 大体操作流程是这样的 1

夺命雷公狗ThinkPHP项目之----商城10商品属性管理

我们一般做项目前就要分析业务逻辑先,这次也不例外. attr_type:是指属性的类型,有唯一,单选和多选之分 唯一属性,是指用户在购买商品时,可以看到的扩展属性如下图所示: 单选属性,是指用户在购买的时候,不需要选择的扩展属性,否则就无法购买,如下所示: 多选和单选是对应的,但是可以选择多个,但是单选的只能选择一个,否则就无法购买. attr_input_type:是指属性的输入方式,有文本框,下拉列表和文本域之分,如下图所示: attr_value:是指如果属性是下拉形式的,应该提供可选值.