记实现一个功能

功能:还未进入购物车时,底部有【共计:】,需要简单的计算进入购物车的货物一共价值多少钱

背景:商品价格被加入了每个商品的【加入购物车按钮】的属性里  :     <p class="addToCarBtn" data-productid="402885de4e059ccd014e05b1c202000e" data-producttitle="森美非浓缩还原橙汁 1L" data-productcurrentcount="100" data-productprice="48.00" data-producttype="402885de4d7f0d15014d7f515e8e018e" data-productgdprice="40.00" data-storeproductfreight="0.00" data-amount="1" οnclick="addCar(this);">加入购物车</p>

初始实现思路:选中每个【加入购物车】按钮,遍历它们,点击它们时用this.attr('data-productprice')来获取他们的价格,然后加到一起(还没考虑到重复加入怎么避免),代码:  var a=[];    a=$('.addToCarBtn'); 遍历a ; a[i].click(function(){this.attr('data-productprice')})      

初始结果: this总是不起作用,不清楚原因;

最终实现思路:   每个商品【加入购物车按钮】里都加入了οnclick="addCar(this);这个事件。这个事件的this是可以正确指向这个按钮的;addCar()如下:

function addCar(obj){
    var productId = $(obj).attr("data-productId");

    var productType=$(obj).attr("data-productType");
    var productTitle = $(obj).attr("data-productTitle");
    var productCurrentCount = $(obj).attr("data-productCurrentCount");
    var productPrice = $(obj).attr("data-productPrice");
    var productGdprice=$(obj).attr("data-productGdprice");
    var storeProductFreight=$(obj).attr("data-storeProductFreight");
    var amount=$(obj).attr("data-amount");
    var proStr = productId + "|||" + productTitle + "|||" + productCurrentCount + "|||" + productPrice+ "|||" +productGdprice+ "|||" +storeProductFreight+ "|||" +amount;
    var proArray = new Array();
    var pro = {};
    var car = localStorage.getItem("car-" + communityId);
    productTypeArr.push(productType);
    sessionStorage.setItem('productTypeArray',productTypeArr);

    if(car == null || car.indexOf(productId) == -1){
        carNumber=parseFloat(productPrice)+parseFloat(carNumber);
        $('#carNumber').html('共计:'+carNumber+'元');
        if(car == null || car == ""){
            localStorage.setItem("car-" + communityId,proStr);
        }else{
            localStorage.setItem("car-" + communityId,car + "###" + proStr);
        }
        alert("加入购物车成功!");
    }else{
        alert("该商品已在购物车中!");
    }
}

 

其中使用 if(car == null || car.indexOf(productId) == -1) 就解决了重复加入的问题

字符串的IndexOf()方法搜索在该字符串上是否出现了作为参数传递的字符串,如果找到字符串,则返回字符的起始位置 (0表示第一个字符,1表示第二个字符依此类推)如果说没有找到则返回 -1。所以我们常常用这个方法来测试字符串中有没有这个字符串

总结:1.给每个按钮绑定事件带this,比把每个按钮都选中,遍历绑时间好像要好用

        2.if(car == null || car.indexOf(productId) == -1) 解决重复加入问题

       3.parseFloat()从字符串到数字

转载于:https://www.cnblogs.com/xisitan/p/4726895.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值