为了账号安全,请及时绑定邮箱和手机立即绑定

用JS实现购物车特效

难度初级
时长 1小时39分
学习人数
综合评分9.80
83人评价 查看评价
10.0 内容实用
9.7 简洁易懂
9.7 逻辑清晰
  • //用jquery写了一遍 

    $(function(){

    //全选

    var $checkAll= $(".check-all");

    var $check=$(".check");

    var $checkOne=$(".check-one");

    var $selectedTotal=$("#selectedTotal");

    var $priceTotal=$("#priceTotal");

    var $selectedViewList=$("#selectedViewList");

    var $selected=$("#selected");

    var $foot=$("#foot");

    var tr=$("#cartTable").find("tbody").find("tr");

    var $deleteAll=$("#deleteAll");

    var $deleteOne=$("#cartTable").find(".delete");

    var $countInput=$(".count-input");

    var $price=$(".price");

    var indexs=0;

    $checkAll.change(function(){

    if($(this).is(':checked')){

    $check.prop("checked",true);

    indexs=$checkOne.length;

    }else{

    $check.prop("checked",false);

    indexs=0;

    }

    totol();

    })

    //单选

    $checkOne.change(function(){

    if($(this).is(':checked')){

    indexs++;

    }else{

    indexs--;

    }

    if(indexs==$checkOne.length){

    $checkAll.prop("checked",true);

    }

    if($(this).is(':checked')==false){

    $checkAll.prop("checked",false);

    }

    totol();

    })

    //计算

    function totol(){

    var price=0;

    var seleted=0;

    var htmlStr='';

    for(var i=0;i<tr.length;i++){

    if($(tr[i]).find(".check-one").is(':checked')){

    $(tr[i]).addClass("on");

    price+=parseFloat($(tr[i]).find(".subtotal").html());

    seleted+=parseInt($(tr[i]).find(".count-input").val())

       htmlStr+='<div><img src="' + $(tr[i]).find("img").attr("src") + '"><span class="del" index="' + i + '">取消选择</span></div>';

    }else{

    $(tr[i]).removeClass("on");

    }

    }

    $selectedTotal.html(seleted);

    $priceTotal.html(price.toFixed(2));

    $selectedViewList.html(htmlStr);


    if($selectedTotal.html()==0){

               $foot.removeClass("show");  

            }

    }


    $selected.on("click",function(){

    if($selectedTotal.html()!=0){

    $foot.toggleClass("show")

    }

    })


    $selectedViewList.on("click",".del",function(){

    var index=$(this).attr("index");

    $checkOne.eq(index).trigger("click");

    $(this).parent("div").empty();


    })


    //删除全部

    $deleteAll.on("click",function(){

    if($selectedTotal.html()!=0){

    var conf = confirm('确定删除吗?');

                if(conf){

                for(var i=0;i<tr.length;i++){

    if($(tr[i]).find(".check-one").is(':checked')){

    $(tr[i]).empty();


    }


    }

                }

    }


    })

    //删除单个

    $deleteOne.on("click",function(){

    var confs = confirm('确定删除吗?');

    if(confs){

    $(this).closest("tr").empty();

    }

    })



    for(var i=0;i<tr.length;i++){

    //加减数量

    $(tr[i]).on("click",function(e){

    e = e || window.event;

                var el = e.toElement;

                var cls = $(el).prop("className");

       var num=parseInt($(this).find(".count-input").val());

                switch (cls) {

                    case 'add':

                    num++

                        $(this).find(".count-input").val(num);

                    $(this).find(".reduce").html("-");

                    Calculation($(this));

                    totol();

                        break;

                    case 'reduce':

                    if(num>1){

                    num--;

                    $(this).find(".count-input").val(num);

                    }

                    if(num<=1){

                    $(this).find(".reduce").html("")

                    num=1

                    }

                    Calculation($(this));

                    totol();

                    break;

               }

              

               

    })



    //输入数量

    $(tr[i]).find(".count-input").on("keyup",function(){

    var value=parseInt($(this).val());

    if(isNaN(value) || value<=1){

    value=1;

    $(this).closest("tr").find(".reduce").html("");

    }

    $(this).val(value);

    if(value>1){

    $(this).closest("tr").find(".reduce").html("-");

    }

    Calculation($(this).closest("tr"));

    totol();

    })


    }


    //单行计算

    function Calculation(tr){

    var price=parseFloat(tr.find(".price").html());

    var num=parseInt(tr.find(".count-input").val());

    var totolCont=price*num

    var totol=parseFloat(totolCont.toFixed(2));

    tr.find(".subtotal").html(totol);

    }

    //初始全选

    $checkAll.prop("checked",true);

    $checkAll.trigger("click");


    })


    查看全部
  • 选中高亮效果 代码优化
    查看全部
  • 选中高亮效果 代码
    查看全部
  • 选中高亮效果展示
    查看全部
  • border-collapse属性设置表格的边框是否被合并为一个单一的边框,还是象在标准的 HTML 中那样分开显示 separate: 边框独立 collapse: 相邻边被合并
    查看全部
    3 采集 收起 来源:编程练习

    2015-04-18

  • var CheckOnePlus = false;
    查看全部
    2 采集 收起 来源:编程练习

    2017-06-22

  • .getAttribute('index')
    查看全部
  • .toFixed(2)
    查看全部
  • tr.cells[4].innerHTML
    查看全部
  • indexOf(cls) >=0
    查看全部
  • .push()
    查看全部
  • children[1].rows
    查看全部
  • var a = 123.456789; a.toFixed(2); //结果是只保留2位小数
    查看全部
  • 封面的大狗真可爱
    查看全部
  • 根据要写的代码,层次分明,更简洁 1.计算已选项的总数 2.全选事件 3.每个选项的事件
    查看全部
    1 采集 收起 来源:编程练习

    2015-07-29

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
您需要掌握HTML语法,CSS布局基础,基本的JavaScript语法知识。
老师告诉你能学到什么?
1. 实现兼容低版本IE的getElementsByClassName()方法 2. JS表格操作 3. 通过parseInt(),parseFloat()把字符串转换成数字 4. 通过toFixed()把数字格式化成指定位数的小数 5. 事件代理的运用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!