1. 该模块采用Springmvc+spring+mybatis实现:
    首先点击商品首页链接,从后台加载商品信息至商品详情页。
    从后台加载商品信息代码如下:
  1. @RequestMapping(value="/product/detail.shtml")
  2. public String detail(Integer id,String name, ModelMap model){
  3. Product product = productService.getProductByKey(id);//包含img
  4. List<Sku> skus = skuService.getStock(id);
  5. List<Color> c = new ArrayList<Color>(); //去掉重复颜色
  6. for (Sku sku : skus) {//重写equals方法
  7. if(!c.contains(sku.getColor())){ //判断集合是否包含此颜色
  8. c.add(sku.getColor());
  9. }
  10. }
  11. model.addAttribute("skus",skus);
  12. model.addAttribute("product",product);
  13. model.addAttribute("colors",c);
  14. return "/product/productDetail";
  15. }
  16.  
  17. mybatis对应sql
  1. <select id="getStock" parameterType="Integer" resultMap="sku">
  2. select
  3. 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
  4. FROM bbs_sku
  5. <where>
  6. stock_inventory > 0 and product_id = #{productId}
  7. </where>
  8. </select>
  1.  
  1.  
  1. 商品详情页,颜色尺码联动及购买数量选择js代码:
    <script type="text/javascript">
  2. $(function(){
  3. //初始化点击第一个颜色 jquery
  4. $("#colors a:first").trigger("click"); //初始化点击第一个颜色
  5. $("#sub").click(function(){
  6. var num = $("#num").val();
  7. num--;
  8. if(num == 0){
  9. return;
  10. }
  11. //赋值
  12. $("#num").val(num);
  13. });
  14. $("#add").click(function(){
  15. var num = $("#num").val();
  16. num++;
  17. if(num>buyLimit){
  18. alert("此商品一次只能买"+buyLimit+"件");
  19. return;
  20. }
  21. $("#num").val(num);
  22. });
  23. });
  24. //全局变量
  25. var colorId ;
  26. var skuId;
  27. var buyLimit;
  28. function colorToRed(target,id){
  29. colorId = id;
  30. $("#colors a").each(function(){ //colors下的a标签 通过id修改
  31. $(this).attr("class","changToWhite");
  32. });
  33. //先清理尺码 都变成不可点
  34. $("#sizes a").each(function(){
  35. $(this).attr("class","not-allow");
  36. });
  37. var flag = 0;
  38. $(target).attr("class","changToRed");
  39. <c:forEach items="${skus}" var="sku">
  40. if('${sku.colorId}' == id){
  41. if(flag == 0){ //默认第一个为选中
  42. $("#"+'${sku.size}').attr("class","changToWhite");
  43. $("#"+'${sku.size}').attr("class","changToRed");
  44. flag = 1;
  45. $("#price").html("¥"+'${sku.skuPrice}');
  46. $("#mprice").html("¥"+'${sku.marketPrice}');
  47. $("#fee").html("¥"+'${sku.deliveFee}');
  48. $("#stockInventory").html("¥"+'${sku.stockInventory}');
  49. skuId = '${sku.id}';
  50. buyLimit = '${sku.skuUpperLimit}';
  51. }else{
  52. $("#"+'${sku.size}').attr("class","changToWhite");
  53. }
  54. }
  55. </c:forEach>
  56. }
  57. function sizeToRed(target,id) {
  58. var cc = $(target).attr("class");
  59. if(cc=="not-allow"){
  60. return;
  61. }
  62. //先清理尺码 都变成未选状态
  63. $("#sizes a").each(function(){
  64. var c = $(this).attr("class");
  65. if(c!="not-allow"){
  66. $(this).attr("class","changToWhite");
  67. }
  68. });
  69. // 变红
  70. $(target).attr("class","changToRed");
  71.  
  72. <c:forEach items="${skus}" var="sku">
  73. if('${sku.colorId}' == colorId && id== '${sku.size}' ){
  74. $("#price").html("¥"+'${sku.skuPrice}');
  75. $("#mprice").html("¥"+'${sku.marketPrice}');
  76. $("#fee").html("¥"+'${sku.deliveFee}');
  77. $("#stockInventory").html("¥"+'${sku.stockInventory}');
  78. skuId = '${sku.id}';
  79. buyLimit = '${sku.skuUpperLimit}';
  80. }
  81. </c:forEach>
  82. }
  83. </script>
  1.  
  1. 商品详情页代码:
  1. <div class="r" style="width: 640px">
  2. <ul class="uls form">
  3. <li><h2>${product.name }</h2></li>
  4. <li><label>巴 巴 价:</label><span class="word"><b class="f14 red mr" id="price">¥144</b>(市场价:<del id="mprice">¥150.00</del>)</span></li>
  5. <li><label>商品评价:</label><span class="word"><span class="val_no val3d4" title="4分">4分</span><var class="blue">(已有888人评价)</var></span></li>
  6. <li><label>运  费:</label><span class="word" id="fee">10元</span></li>
  7. <li><label>库  存:</label><span class="word" id="stockInventory">100</span><span class="word" ></span></li>
  8. <li><label>选择颜色:</label>
  9. <div id="colors" class="pre spec">
  10. <c:forEach items="${colors}" var="color">
  11. <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>
  12. </c:forEach>
  13. </div>
  14. </li>
  15. <li id="sizes"><label>尺  码:</label>
  16. <a href="javascript:void(0)" onclick="sizeToRed(this,'S')" class="not-allow" id="S">S</a>
  17. <a href="javascript:void(0)" onclick="sizeToRed(this,'M')" class="not-allow" id="M">M</a>
  18. <a href="javascript:void(0)" onclick="sizeToRed(this,'L')" class="not-allow" id="L">L</a>
  19. <a href="javascript:void(0)" onclick="sizeToRed(this,'XL')" class="not-allow" id="XL">XL</a>
  20. <a href="javascript:void(0)" onclick="sizeToRed(this,'XXL')"class="not-allow" id="XXL">XXL</a>
  21. </li>
  22. <li><label>我 要 买:</label>
  23. <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>
  24. <input id="num" type="text" value="1" name="" size="1" readonly="readonly">
  25. <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>
  26. <li class="submit"><input type="button" value="" class="hand btn138x40" onclick="buy(${product.id});"/><input type="button" value="" class="hand btn138x40b" onclick="addCart()"/></li>
  27. </ul>
  28. </div>
  1.  

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. HDFS在web端无法访问文件

    解决办法1: [root@djt002 hadoop]# vi /etc/selinux/config 改为 SELINUX=disabled 解决办法2: 查看你的$HADOOP_HOME/etc/ ...

  2. ROS-by-example的安装

    在这里我之前用的VM12安装成功之后,仿真器机器人会有问题,故把电脑做成双系统的形式来重新安装: 环境:Ubuntu14.04 LTS 32bits ROS版本:ROS Indigo 在学习本部分之后 ...

  3. <Linux> 文件夹右下角有锁,解锁

    sudo chown -R $USER 文件夹路径 例如:sudo chown -R $USER ~/scala

  4. 《算法》第四章部分程序 part 12

    ▶ 书中第四章部分程序,包括在加上自己补充的代码,图的几种补充数据结构,包括无向 / 有向符号图,有权边结构,有边权有向图 ● 无向符号图 package package01; import edu. ...

  5. webapi_uploadfile_gdal_to_geojson_and_unzipfile

    using ICSharpCode.SharpZipLib.Zip; using OSGeo.GDAL; using OSGeo.OGR; using System; using System.Col ...

  6. 使用windows性能计数器监控cpu使用率

    https://blog.csdn.net/yabingshi_tech/article/details/26672355 2. http://blog.51cto.com/qixue/1702557 ...

  7. ThinkPHP3.2项目模块结构

    Demo --项目目录 Addons --插件目录 Application --应用模块目录 Admin --后台模块 Common --后台公共函数目录 function.php (可选) Conf ...

  8. C库中strcpy函数的参数为NULL问题

    在标准C库的字符串处理函数 strxxx 一系列函数中,对参数传入NULL会导致程序崩溃. 如下代码中,无论那个参数为NULL,都会让程序崩溃,所以我们必须自己对参数进行传入前的检查. int mai ...

  9. Firefox What's New 太难找了

    Firefox每次更新版本,不知道更新了什么,找不到Waht‘s New,做个记录! 1.点击mozilla下拉 2.最左侧 MOZILLA>SUPPORT>Firefox 3.https ...

  10. ESXi 上创建CentOS虚拟机

    之前介绍了ESXi上添加存储.本篇介绍一下在ESXi上创建CentOS虚拟机. 方法/步骤   登陆ESXi,选择“创建/注册虚拟机” 选择“创建新的虚拟机” 给装的虚拟机命名,并选择操作系统及版本 ...