该模块采用Springmvc+spring+mybatis实现:
首先点击商品首页链接,从后台加载商品信息至商品详情页。
从后台加载商品信息代码如下:
  @RequestMapping(value="/product/detail.shtml")
public String detail(Integer id,String name, ModelMap model){
Product product = productService.getProductByKey(id);//包含img
List<Sku> skus = skuService.getStock(id);
List<Color> c = new ArrayList<Color>(); //去掉重复颜色
for (Sku sku : skus) {//重写equals方法
if(!c.contains(sku.getColor())){ //判断集合是否包含此颜色
c.add(sku.getColor());
}
}
model.addAttribute("skus",skus);
model.addAttribute("product",product);
model.addAttribute("colors",c);
return "/product/productDetail";
} mybatis对应sql:
    <select id="getStock" parameterType="Integer" resultMap="sku">
select
id,product_id,color_id,size,delive_fee,sku_price,stock_inventory,sku_upper_limit,location,sku_img,sku_sort,sku_name,market_price,create_time,update_time,create_user_id,update_user_id,last_status,sku_type,sales
FROM bbs_sku
<where>
stock_inventory > 0 and product_id = #{productId}
</where>
</select>

 
商品详情页,颜色尺码联动及购买数量选择js代码:
<script type="text/javascript">
$(function(){
//初始化点击第一个颜色 jquery
$("#colors a:first").trigger("click"); //初始化点击第一个颜色
$("#sub").click(function(){
var num = $("#num").val();
num--;
if(num == 0){
return;
}
//赋值
$("#num").val(num);
});
$("#add").click(function(){
var num = $("#num").val();
num++;
if(num>buyLimit){
alert("此商品一次只能买"+buyLimit+"件");
return;
}
$("#num").val(num);
});
});
//全局变量
var colorId ;
var skuId;
var buyLimit;
function colorToRed(target,id){
colorId = id;
$("#colors a").each(function(){ //colors下的a标签 通过id修改
$(this).attr("class","changToWhite");
});
//先清理尺码 都变成不可点
$("#sizes a").each(function(){
$(this).attr("class","not-allow");
});
var flag = 0;
$(target).attr("class","changToRed");
<c:forEach items="${skus}" var="sku">
if('${sku.colorId}' == id){
if(flag == 0){ //默认第一个为选中
$("#"+'${sku.size}').attr("class","changToWhite");
$("#"+'${sku.size}').attr("class","changToRed");
flag = 1;
$("#price").html("¥"+'${sku.skuPrice}');
$("#mprice").html("¥"+'${sku.marketPrice}');
$("#fee").html("¥"+'${sku.deliveFee}');
$("#stockInventory").html("¥"+'${sku.stockInventory}');
skuId = '${sku.id}';
buyLimit = '${sku.skuUpperLimit}';
}else{
$("#"+'${sku.size}').attr("class","changToWhite");
}
}
</c:forEach>
}
function sizeToRed(target,id) {
var cc = $(target).attr("class");
if(cc=="not-allow"){
return;
}
//先清理尺码 都变成未选状态
$("#sizes a").each(function(){
var c = $(this).attr("class");
if(c!="not-allow"){
$(this).attr("class","changToWhite");
}
});
// 变红
$(target).attr("class","changToRed"); <c:forEach items="${skus}" var="sku">
if('${sku.colorId}' == colorId && id== '${sku.size}' ){
$("#price").html("¥"+'${sku.skuPrice}');
$("#mprice").html("¥"+'${sku.marketPrice}');
$("#fee").html("¥"+'${sku.deliveFee}');
$("#stockInventory").html("¥"+'${sku.stockInventory}');
skuId = '${sku.id}';
buyLimit = '${sku.skuUpperLimit}';
}
</c:forEach>
}
</script>

商品详情页代码:
<div class="r" style="width: 640px">
<ul class="uls form">
<li><h2>${product.name }</h2></li>
<li><label>巴 巴 价:</label><span class="word"><b class="f14 red mr" id="price">¥144</b>(市场价:<del id="mprice">¥150.00</del>)</span></li>
<li><label>商品评价:</label><span class="word"><span class="val_no val3d4" title="4分">4分</span><var class="blue">(已有888人评价)</var></span></li>
<li><label>运  费:</label><span class="word" id="fee">10元</span></li>
<li><label>库  存:</label><span class="word" id="stockInventory">100</span><span class="word" >件</span></li>
<li><label>选择颜色:</label>
<div id="colors" class="pre spec">
<c:forEach items="${colors}" var="color">
<a onclick="colorToRed(this,${color.id})" href="javascript:void(0)" title="${color.name }" class="changToWhite"><img width="25" height="25" data-img="1" src="/res/img/pic/ppp00.jpg" alt="${color.name } "><i>${color.name }</i></a>
</c:forEach>
</div>
</li>
<li id="sizes"><label>尺  码:</label>
<a href="javascript:void(0)" onclick="sizeToRed(this,'S')" class="not-allow" id="S">S</a>
<a href="javascript:void(0)" onclick="sizeToRed(this,'M')" class="not-allow" id="M">M</a>
<a href="javascript:void(0)" onclick="sizeToRed(this,'L')" class="not-allow" id="L">L</a>
<a href="javascript:void(0)" onclick="sizeToRed(this,'XL')" class="not-allow" id="XL">XL</a>
<a href="javascript:void(0)" onclick="sizeToRed(this,'XXL')"class="not-allow" id="XXL">XXL</a>
</li>
<li><label>我 要 买:</label>
<a id="sub" class="inb arr" style="border: 1px solid #919191;width: 10px;height: 10px;line-height: 10px;text-align: center;" title="减" href="javascript:void(0);" >-</a>
<input id="num" type="text" value="1" name="" size="1" readonly="readonly">
<a id="add" class="inb arr" style="border: 1px solid #919191;width: 10px;height: 10px;line-height: 10px;text-align: center;" title="加" href="javascript:void(0);">+</a></li>
<li class="submit"><input type="button" value="" class="hand btn138x40" onclick="buy(${product.id});"/><input type="button" value="" class="hand btn138x40b" onclick="addCart()"/></li>
</ul>
</div>
 

js实现商品颜色尺码联动以及购买数量的选择的更多相关文章

  1. 服装盘点机PDA在服装行业颜色尺码仓库条码高效管理应用

    服装行业的商品管理的特点是需要管理颜色和尺码 具体逻辑就是: 什么商品,什么颜色,什么尺码,入库多少个? 什么商品,什么颜色,什么尺码,出库多少个? 什么商品,什么颜色,什么尺码,还有库存多少个? 如 ...

  2. JS Select 月日日期联动

    Js对Select控件进行联动操作,一个select选择月份后另一个select生成对应月份的所有日期. <%@ Page Language="C#" AutoEventWi ...

  3. Codrops 实验:使用 Vibrant.js 提取图像颜色

    Codrops 分享了一个有趣的颜色提取实验.这个想法是创建图像的调色板,既有图像本身的潜移默化的影响,也有一些花哨的颜色延伸.通过使用 Vibrant.js 来提取图像中的颜色,并通过 CSS 过滤 ...

  4. 关于更改MYECLIPSE JS 代码背景颜色

    白色的背景,看花了眼,你想改一下编辑器的背景颜色,移步这里就可以了. 这时你高兴的打开编辑器,发现颜色确实变了,但是当你打开有JS的JSP时,你碉堡了,发现JS的背景颜色还是默认的, 看着让人纠结,好 ...

  5. JS年月日三级联动下拉框日期选择代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. js获取背景颜色

    //js获取背景颜色var Airport=$("#Airport").css('background-color'); js设置背景颜色 $("#intercity&q ...

  7. 纯js做的select二级联动

    分步阅读 select 联动用到的范围很广,下面介绍一下简单的二级联动 方法/步骤   做一个简单的html页面,用于显示select联动,如图所示:   设置js,点击一级选择项时,创建其下对应的二 ...

  8. JS实现随机颜色的3种方法与颜色格式的转化

    JS实现随机颜色的3种方法与颜色格式的转化   随机颜色和颜色格式是我们在开发中经常要用到的一个小功能,网上相关的资料也很多,想着有必要总结一下自己的经验.所以这篇文章主要介绍了JS实现随机颜色的3种 ...

  9. js点击某个图标或按钮弹出文件选择框

    <HTML> <head> <script type="text/javascript" src="script/jquery-1.6.2. ...

随机推荐

  1. Java URLEncoder URLDecoder

    URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换 URLDecoder类包含一 ...

  2. centos 共享文件目录

    # yum install nfs-utils # mkdir /storage # cat /etc/exports /storage *(fsid=0,rw,sync,no_root_squash ...

  3. 34. Win7_x64安装oracle11g出现DIM-00019

    Win7_x64安装oracle11g出现如下异常处理方式 DIM-00019:创建服务时出错. O/S-ERROR:(OS 1726)远程过程调用失败. 点击弹出的错误框上的确定按钮后,继续弹出错误 ...

  4. Android自定义View学习(三)

    属性动画(上) 参考:HenCoder 自定义绘制的第 1-6 期:属性动画 Property Animation(上手篇) Interpolator 其实就是速度设置器,设置动画运行的速度. 属性动 ...

  5. 恺撒密码 I Python实现

    '''恺撒密码 I描述凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:原文:A ...

  6. yum centos 修改镜像源

    参考:https://blog.csdn.net/sj349781478/article/details/78736873 3.清除yum缓存 yum clean all yum makecache ...

  7. VC中明明已经添加了头文件却还提示未定义的问题

    我在VS中编译程序遇到这个错误:error C3861: 'ReadDirectoryChangesW': identifier not found, even with argument-depen ...

  8. JeeWx捷微3.1小程序版本发布,支持微信公众号,微信企业号,支付窗——JAVA版开源微信管家

    支持小程序,JeeWx捷微3.1小程序版本发布^_^ JeeWx捷微V3.1——多触点小程序版本管理平台(支持微信公众号,微信企业号,支付窗)   JeeWx捷微V3.1.0版本紧跟微信小程序更新,在 ...

  9. win7下iis的配置问题

    开始asp的学习时,首先得配置iis服务,中途遇到各种问题也谷歌了不少,但是答案都很凌乱,折腾了两天才彻底解决这个问题.下面是我坎坷的配置过程,希望对你有所帮助: 第一步:打开Internet信息服务 ...

  10. happyxiaofan的程序员书单

    转自   happyxiaofan 读书的看法 从15年7月至今,研究生期间读了不少书,读书让我学到了很多,也是提升技术能力的一个重要手段.可能很多人嫌读书太花时间,曾经的我一度也是这么认为的,觉得一 ...