电商笔记-09(点击不同的颜色,显示不同的尺码.点击不同的尺码,显示不同的价格)

来源:互联网 发布:lte是什么网络制式移动 编辑:程序博客网 时间:2024/04/28 02:13

复杂功能的逻辑分析

显示颜色.点击不同的颜色,显示不同的尺码.点击不同的尺码,显示不同的价格

         此时页面已经拥有商品详情中所需要的全部数据

  • 使用c标签的循环,将此商品的所有颜色全部显示出来.

  • 当点击某一个颜色时,会触发点击事件,此事件会携带当前标签对象,和选中的颜色id.在js代码中嵌入C循环的标签代码,用EL表达式取出装有sku的库存集合.
    在循环中判断取出用户点击颜色与库存中对应的记录,这样就可以获取,属于此颜色下的所有尺码了.找到显示尺码标签对象的上一级标签,拼接尺码.

  • 用户第一次进入展示详情页面,默认选中第一个颜色,和第一个尺码.$(“#colors div:first”).click();可以解决第一个颜色问题.因为在页面进行之后,已经默认选中一个颜色了,那么第一个尺码,可以在循环中判断选中的第一个颜色与库存对等的第一个尺码.将此条尺码默认选中.

  • 这个需要用户选择的颜色id与库存表中的颜色id对应,而且 还要用户选择的尺码,要与库存表中的尺码对应,才可以确定具体的价格.循环中获取用户当前选择的颜色id,赋值给全局变量.用户点击尺码,可以获取用户当前选中的具体尺码.重新重新嵌入C循环的标签代码,循环库存,且的方式判断两个条件成立的记录.取出对应的价格,动态添加到价格显示框中.

superPojo:页面详情所需的数据

superPojo.map:对应商品的颜色ID和颜色

HTML

    <!-- ---------------------根据用户点击的商品id显示此商品下的所有颜色---------------------------------->            <div id="choose" class="clearfix p-choose-wrap">                <div id="choose-color" class="li choose-color-shouji p-choose">                    <div class="dt">选择颜色:</div>                    <div class="dd" id="colors">                    <!-- 循环显示 -->                        <c:forEach items="${superPojo.map }" var="color" varStatus="i">                            <div class="item" onclick="colorToRed(this,'${color.key}')">                                <b></b>                                 <a href="javascript:;"  title="${color.value }">                                 <img data-img="1" src="/   images/53f44cc2N0b714cb2_002.jpg" alt="" height="25"    width="25" />                                    <i>${color.value }</i>                                </a>                            </div>                        </c:forEach>                    </div>                </div>    <!-- ---------------------根据颜色显示尺码---------------------------------->                <div id="choose-version" class="li p-choose">                    <div class="dt">选择尺码:</div>                    <div class="dd" id="sizes">                    </div>                </div>

JS -> js中可以嵌套C标签/标签.

var color_id= "";//选中颜色显示红色框function colorToRed(item,colorId){    color_id = colorId;    var html = "";    //标签循环    <c:forEach items="${superPojo.superPojos}" var="sku" varStatus="i">    //循环判断用户选择的颜色ID与库存中相等的颜色id,为true就将当前颜色id对应的尺码添加到标签    if(colorId == '${sku.color_id}'){            html += "<div class=\"item\" id=\"S\" onclick=\"sizeToRed(this,'${sku.size}')\"><b></b><a href=\"javascript:;\" title=\"S\" >${sku.size}</a></div>";    }    </c:forEach>    //将选中的当前颜色的下的尺码添加到页面    $("#sizes").html(html);    //清除全部红色框框    $("#colors div").attr("class","item");    //添加重新选择的框框    $(item).attr("class","item selected");    //第一次点击颜色时,默认选中第一条尺码    $("#sizes div:first").click();}    //如果选择的是S码function sizeToRed(item, size){    //清除全部红色框框    $("#sizes div").attr("class","item");    //添加重新选择的框框    $(item).attr("class","item selected");    //标签循环    //循环判断当前颜色和尺码对应的库存记录,才可以获取对应的价格并动态显示    <c:forEach items="${superPojo.superPojos}" var="sku" varStatus="i">        if(size == '${sku.size}' && color_id == '${sku.color_id}'){        $("#bbs-price").text("${sku.price}");        }    </c:forEach>}//頁面加载完毕执行 使用显示排在第一的颜色 ,和排在第一的尺码$(function(){    $("#colors div:first").click();})
阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 搜狗输入法打字不显示选字框怎么办 粘贴文字时带自动添加了序号怎么办 电脑上是表字打印出来是坔怎么办 不同颜色的衣服一起洗染色了怎么办 两岁宝宝不爱吃饭怎么办且消瘦 一岁两个月宝宝不爱吃饭怎么办 罗汉鱼头座大颜色不红怎么办 为什么孩子的牙都是龋齿怎么办呀 蓝迪儿童墙膜出现气泡了怎么办 空sd卡或文件系统不受支持怎么办 8个月宝宝吃了纸怎么办 宝宝出生两天了不吃不喝怎么办 八个月宝宝阴唇边红肿痛怎么办 儿童五周岁九个月比同龄矮怎么办 8个月宝宝长牙母乳喂养咬人怎么办 6周的孩子视力低常怎么办 宝宝吃了甜食生痰咳嗽怎么办 两个月的边牧抵抗力差怎么办 阴茎勃起后向上翘的厉害怎么办 5个月宝宝发烧38.5度怎么办 9个月宝宝发烧38.5度怎么办 八个月宝宝只吃母乳不吃奶粉怎么办 八个月母乳不够宝宝不吃奶粉怎么办 八个月宝宝吃母乳不吃奶粉怎么办 八个月宝宝戒奶不吃奶粉怎么办 刚满月的宝宝发烧38度怎么办 未满月的宝宝发烧38度怎么办 半月大的婴儿吃奶就漾奶怎么办 上司交给你不能完成的任务怎么办 电脑光驱里放入光碟放不出来怎么办 黑暗之魂3太难了怎么办 苹果手机下载的游戏闪退怎么办 宝宝两岁了不怎么爱拉大便怎么办? 小狗脖子发硬疼的直叫怎么办 厨房里有很多小虫子围着鸡蛋怎么办 狗生小狗后几天不吃饭怎么办 还没满月的小兔子突然死了怎么办 宝宝小鸡被蚊子咬后肿得很大怎么办 不知道是哪知兔子下的小兔怎么办 兔子生完小兔不吃东西了怎么办 人工喂养七天的小羊拉希怎么办