基于jQuery模拟实现淘宝购物车模块

这是网页版淘宝中购物车的页面

注意给checkbox添加事件就是用change()

给button添加事件就是用click()

1、每次点击+号,根据文本框的值乘以当前商品的价格就是商品的小计

2、只能增加本商品的小计,就是当前商品的小计模块

3、修改普通元素的内容是text方法

4、当前商品的价格要把¥符号去掉再相乘 截取字符串substr()

5、parents(‘选择器’)可以返回指定祖先元素4

6、最后计算的结果如果想要保留两位小数通过toFixed(2)方法

7、用户也可以直接修改表单里面的值,同样要计算小计,用表单change事件

8、用最新的表单内容的值乘以单价即可,但还是当前商品的小计

计算总计和总额:

思路:把所有文本框里面的值相加就是总计数量,总额同理

文本框里面的值不相同,如果想要相加就需要用到each的遍历,声明一个变量,相加即可

点击+号或者-号,都会改变总计和总额,如果用户修改了文本框里面的值也会改变总额,那么都要分别添加到这三个事件中,因此封装一个函数来求总额和总计,以上几个操作调用即可

注意:总计是文本框中的值相加val()。总额是普通元素的内容text()

注意普通元素里面的内容要去掉¥并且转为数字型后才能相加

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        img {
            width: 80px;
            height: 80px
        }

        a {
            color: black;
            text-decoration: none;
        }

        .mony {
            width: 20px;
            text-align: center;
        }
    </style>
    <script src="jquery.min.js"></script>
</head>

<body>
    <div>全部商品</div>
    <!-- 一个表单元素 -->
    <form action="">
        <table style="border-collapse: 0px;border-spacing: 0px;width:872px">
            <tr style="background-color:grey;">
                <td><input type="checkbox" class="choseall">全选</td>
                <td style="width:500px;height:40px">商品</td>
                <td>单价</td>
                <td style="width:100px">数量</td>
                <td style="width:100px">小计</td>
                <td>操作</td>
            </tr>
            <tr>
                <td><input type="checkbox" class="goodchose"></td>
                <td>
                    <div>
                        <div style="float:left">
                            <a href="">
                                <img src="https://img.alicdn.com/bao/uploaded/i2/2904754564/O1CN011Q0OER1jaMJXxFeHl_!!2904754564.jpg_240x240.jpg" alt="">
                            </a>
                        </div>
                        <div>
                            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >【新势力周】YUKI小树家可爱趣味印花短款白T恤+卡扣高腰宽松复古阔腿牛仔长裤</a>
                        </div>
                    </div>
                </td>
                <td class="onemony">¥37.00</td>
                <td>
                    <input type="button" value="-" class="jian"><input type="text" class="mony" value="1"><input type="button" value="+" class="add">
                </td>
                <td class="totalmony">¥37.00</td>
                <td>删除</td>
            </tr>
            <tr>
                <td><input type="checkbox" class="goodchose"></td>
                <td>
                    <div>
                        <div style="float:left">
                            <a href="">
                                <img src="https://img.alicdn.com/bao/uploaded/i1/3606826698/O1CN01NPCasY1zLjTBGmAax_!!3606826698.jpg_240x240.jpg" alt="">
                            </a>
                        </div>
                        <div>
                            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >日系正肩短袖t恤女夏薄款设计感小众日系甜酷学生小个子宽松上衣</a>
                        </div>
                    </div>
                </td>
                <td class="onemony">¥49.90</td>
                <td>
                    <input type="button" value="-" class="jian"><input type="text" class="mony" value="1"><input type="button" value="+" class="add">
                </td>
                <td class="totalmony">¥49.90</td>
                <td>删除</td>
            </tr>
            <tr>
                <td><input type="checkbox" class="goodchose"></td>
                <td>
                    <div>
                        <div style="float:left">
                            <a href="">
                                <img src="https://img.alicdn.com/bao/uploaded/i3/3606826698/O1CN01jfI3hB1zLjZhqP5rC_!!3606826698.jpg_240x240.jpg" alt="">
                            </a>
                        </div>
                        <div>
                            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >春秋格子衬衫外套女2022新款小个子设计感小众宽松慵懒风日系上衣</a>
                        </div>
                    </div>
                </td>
                <td class="onemony">¥69.90</td>
                <td>
                    <input type="button" value="-" class="jian"><input type="text" class="mony" value="1"><input type="button" value="+" class="add">
                </td>
                <td class="totalmony">¥69.90</td>
                <td>删除</td>
            </tr>
            <tr>
                <td><input type="checkbox" class="goodchose"></td>
                <td>
                    <div>
                        <div style="float:left">
                            <a href="">
                                <img src="https://img.alicdn.com/bao/uploaded/i2/628189716/O1CN01mpRMR22Ldyv4OgUtt_!!0-item_pic.jpg_80x80.jpg" alt="">
                            </a>
                        </div>
                        <div>
                            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >满减【百草味-红油面皮134g】方便面盒装速食凉皮拌泡面米粉凉皮</a>
                        </div>
                    </div>
                </td>
                <td class="onemony">¥23.70</td>
                <td>
                    <input type="button" value="-" class="jian"><input type="text" class="mony" value="1"><input type="button" value="+" class="add">
                </td>
                <td class="totalmony">¥23.70</td>
                <td>删除</td>
            </tr>
        </table>
        <div style="position:fixed;bottom:0px;width:872px;background-color:rgb(184, 177, 177);height:50px;line-height: 50px;">

            <input type="checkbox" class="chosealllast">全选<span style="position:absolute;right:230px;" class="totoalgoodn">已经选0件商品</span><span style="position:absolute;right:150px;">总价:</span>
            <span style="position:absolute;left:715px;color:red;font-weight: bold;" class="totalprice">¥12.60</span>

        </div>
    </form>
    <script>
        $(function() {
            //1、全选按钮。上下的全选按钮效果是一样的,按钮状态选中,那么所有商品的状态为选中。点击全选按钮让其不选中时,商品的选中状态就全部取消choseall与goodchose
            $('.choseall').change(function() {
                //让下面商品的选中状态与全选按钮的一致$('.choseall').prop(checked)
                $('.goodchose').prop('checked', $('.choseall').prop('checked'))
                $('.chosealllast').prop('checked', $('.choseall').prop('checked'))
                    //     //全选按钮按下,那么商品总数就等于goodchose的数量
                    // if ($('.choseall').prop('checked') == true) {
                    //     $('.totoalgoodn').text('已经选' + $('.goodchose').length + '件商品')
                    // }
                    // //取消全选数目就等于0
                    // if ($('.choseall').prop('checked') == false) {
                    //     $('.totoalgoodn').text('已经选' + 0 + '件商品')
                    // }
                    //复制一份到下面的全选按钮中
            })
            $('.chosealllast').change(function() {
                //让下面商品的选中状态与全选按钮的一致$('.choseall').prop(checked)
                $('.goodchose').prop('checked', $('.chosealllast').prop('checked'))
                $('.choseall').prop('checked', $('.chosealllast').prop('checked'))
                    // if ($('.choseall').prop('checked') == true) {
                    //     $('.totoalgoodn').text('已经选' + $('.goodchose').length + '件商品')
                    // }
                    // //取消全选数目就等于0
                    // if ($('.choseall').prop('checked') == false) {
                    //     $('.totoalgoodn').text('已经选' + 0 + '件商品')
                    // }
            })

            //2、当商品的选中个数小于商品栏个数的时候,两个全选按钮就会取消选中element:checked  用来专门获取复选框被选中的情况.length获取个数
            $('.goodchose').change(function() {
                // console.log($('.goodchose:checked'))
                if ($('.goodchose:checked').length != $('.goodchose').length) {
                    $('.choseall').prop('checked', false)
                    $('.chosealllast').prop('checked', false)

                }

                //当商品的选中个数等于商品个数的时候,就相当于全选了,此时两个全选复选框全部选中
                if ($('.goodchose:checked').length == $('.goodchose').length) {
                    $('.choseall').prop('checked', true)
                    $('.chosealllast').prop('checked', true)
                }
                // //6、更改商品总数内容
                // $('.totoalgoodn').text('已经选' + $('.goodchose:checked').length + '件商品')
                // console.log($('.goodchose:checked').length);
            })

            //3、修改数量为jian和add添加事件
            $('.add').click(function() {

                //这个商品的价格改变,siblings('')
                //是在初始值上每点击一次就减一,但最小为一
                var b = $(this).siblings('.mony').prop('value')
                    //这个b是一个字符型
                $(this).siblings('.mony').prop('value', parseInt(b) + 1)
                    //4|
                var c = $(this).parent().siblings('.onemony').text().substr(1)
                    // console.log(c)
                    //更改小计里面的内容,显示两个小数.toFixed(2)
                $(this).parent().siblings('.totalmony').text('¥' + (c * (parseInt(b) + 1)).toFixed(2))
                totalnumber()
            })
            $('.jian').click(function() {
                //这个商品的价格改变,siblings('')
                //是在初始值上每点击一次就减一,但最小为一
                var a = parseInt($(this).siblings('.mony').prop('value'))
                if (a >= 2) {
                    $(this).siblings('.mony').prop('value', a - 1)
                        //4|
                    var c = $(this).parent().siblings('.onemony').text().substr(1)
                        // console.log(c)
                        //更改小计里面的内容,显示两个小数.toFixed(2)
                    $(this).parent().siblings('.totalmony').text('¥' + (c * (a - 1)).toFixed(2))
                }
                totalnumber()
            })

            //4、实现小计跟随数量变化,用数量的值*单价。单价去掉¥,得到数字,因为是跟随数量变化的,所以这一部分添加到点击事件中去,substr()

            //5、手动更改数量的时候,小计会发生改变.给mony添加change事件
            $('.mony').change(function() {
                    //获得这里面的值赋值给一个变量
                    var number = $(this).prop('value')
                        //获取对应的单价
                    var c = $(this).parent().siblings('.onemony').text().substr(1)
                        //要保证合格值大于等于1
                    if (number >= 1) {
                        var b = number * c
                    }
                    //当number小于1时,默认为1
                    if (number < 1) {
                        $(this).prop('value', 1)
                        number = 1
                        var b = number * c
                    }
                    // alert(number)
                    // console.log(number)
                    console.log(b)
                    $(this).parent().siblings('.totalmony').text('¥' + (b).toFixed(2))
                    totalnumber()
                })
                //6、获得已经选择的商品个数,就是看商品栏的状态选择个数,再状态变化的事件中进行更改--不对,商品数目拿的是表单里面的数量综合,一旦表单里面的元素值发生改变的时候,就要重新计算以下商品的数目

            //7、更改价格,价格的话就是小计的累加。那么就需要对小计进行遍历,一旦小计发生改变,就需要遍历一次去改变总价
            //函数封装
            //总计
            function totalnumber() {
                var ton = 0
                $('.mony').each(function(index, ele) {
                    // console.log(index);
                    // console.log($('.mony').eq(index).val());直接拿ele这个元素里面的内容,不需要进行索引
                    ton = ton + parseInt($(ele).val())
                })

                $('.totoalgoodn').text('已经选' + ton + '件商品')
                    //总额,从小计里面获得,去掉¥,再遍历相加
                var mon = 0
                $('.totalmony').each(function(i, e) {
                        //首先获取每个元素的text

                        mon = mon + parseInt($(e).text().substr(1))

                    })
                    //把mon给总价后的数值
                $('.totalprice').text('¥' + mon.toFixed(2))
            }
            totalnumber()//打开这个页面,有默认的值存在,所以也要调用一次
        })
    </script>
</body>

</html>

到此这篇关于基于jQuery模拟实现淘宝购物车模块的文章就介绍到这了,更多相关jQuery淘宝购物车内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 纯jquery实现模仿淘宝购物车结算

    这篇文章里,将会提到购物车里的所有功能.包括全选.单选金额改变.在增加数量时金额也会相应改变. 效果图展示: 说下大致的思路吧: 1.首先是计算一行的价格.这个功能在上篇博客里有提到,这里就不列举出来了. 2.遍历选中的几行,将每行的数值相加. 3.将值赋给总金额显示出来.当取消勾选或加减数量时,金额会相应改变. 下面是具体的js部分: <script type="text/javascript"> $(function(){ //计算总金额 function totalM

  • jQuery实现全部购物车功能实例

    目录 一.全选 二.增减商品数量 三.修改商品小计 四.计算总计和总和 五.删除商品  六.选中商品添加背景 七.html 全部核心代码 今天是一些购物车的基本功能实现,全选.增减商品数量.修改商品小计.计算总计和总和.删除商品.选中添加背景颜色等一些常见功能.  html结构的全部代码都在文末了,懂的都懂啊!!! 一.全选 全选分析: 全选思路:里面3个小的复选框按钮(j-checkbox)选中状态(checked)跟着全选按钮(checkall)走. 因为checked 是复选框的固有属性,

  • jQuery模拟淘宝购物车功能

    首先我们要实现的内容的需求有如下几点: 1.在购物车页面中,当选中"全选"复选框时,所有商品前的复选框被选中,否则所有商品的复选框取消选中. 2.当所有商品前的复选框选中时,"全选"复选框被选中,否则"全选"复选框取消选中. 3.单击图标-的时候数量减一而且不能让物品小于0并且商品总价与积分随之改变. 4.单击图标+的时候数量增加并且商品总价与积分随之改变. 5.单击删除所选将删除用户选中商品,单击删除则删除该商品即可并达到商品总价与积分随之改变

  • jQuery实现类似淘宝购物车全选状态示例

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&qu

  • jquery实现购物车功能(1)

    本文实例为大家分享了jquery实现购物车功能的具体代码,供大家参考,具体内容如下 html ​<!DOCTYPE html> <html> <head> <title>购物车</title> <meta charset="utf-8" /> <style type="text/css"> h1 { text-align: center; } table { margin: 0 au

  • 使用jQuery实现购物车

    本文实例为大家分享了jQuery实现购物车的具体代码,供大家参考,具体内容如下 HTML代码 <body> <div id="goodsStore"> <table> <caption>储 物 仓</caption> <thead> <tr> <td>商品编号</td> <td>商品名称</td> <td>商品单价</td> <

  • jQuery实现购物车全功能

    本文实例为大家分享了jQuery实现购物车全功能的具体代码,供大家参考,具体内容如下 效果图: HTML&&CSS: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scal

  • 基于jQuery模拟实现淘宝购物车模块

    这是网页版淘宝中购物车的页面 注意给checkbox添加事件就是用change() 给button添加事件就是用click() 1.每次点击+号,根据文本框的值乘以当前商品的价格就是商品的小计 2.只能增加本商品的小计,就是当前商品的小计模块 3.修改普通元素的内容是text方法 4.当前商品的价格要把¥符号去掉再相乘 截取字符串substr() 5.parents(‘选择器’)可以返回指定祖先元素4 6.最后计算的结果如果想要保留两位小数通过toFixed(2)方法 7.用户也可以直接修改表单

  • 基于jQuery实现仿淘宝套餐选择插件

    首先是页面HTML代码 复制代码 代码如下: <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript&qu

  • 原生js模拟淘宝购物车项目实战

    本文实例讲述了原生js模拟淘宝购物车实现代码.分享给大家供大家参考.具体如下: 通过JavaScript实现类似与淘宝的购物车效果,包括商品的单选.全选.删除.修改数量.价格计算.数目计算.预览等功能的实现.实现的效果图: 相应的代码: shoppingCart.html <!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>JavaScript实现购物车项

  • jquery+CSS3实现淘宝移动网页菜单效果

    本文实例讲述了jquery+CSS3实现淘宝移动网页菜单效果.分享给大家供大家参考.具体如下: 这是一款基于jquery+CSS3实现的淘宝移动网页菜单,其实这个菜单动画并不复杂,只有缩放和位移.难点是用了扇形结构,而且还要实现扇形的链接区域,这个就费脑筋了,最后采用了传统的图片map来做热区,效果还不错.相信肯定有更好的解决方法. 先来看看运行效果截图: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-css3-taobao-phone-menu-c

  • python+selenium+chrome实现淘宝购物车秒杀自动结算

    之前总是想要买aj,但是淘宝店铺每次发售手动抢的时候一般都会被黄牛抢走...最近毕业设计学习了一下python的东西,所以写了这么一个抢购的东西算是解决自己一个小小的愿望,这可是aj啊. 我会把内容写的尽量面向初学者,从头至尾的过程都会有所提及.代码也放在了后面 一.所需环境 Selenium Selenium是一个开源的自动化测试工具.原理是通过模拟浏览器操作,还支持java,python,c#,php等主流的编程语言. 一般爬虫也支持Selenium,一些经过js渲染的内容和数据和ajax异

  • scrapy框架携带cookie访问淘宝购物车功能的实现代码

    scrapy框架简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便 scrapy架构图 crapy Engine(引擎): 负责Spider.ItemPipeline.Downloader.Scheduler中间的通讯,信号.数据传递等. Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整

  • Android实现仿淘宝购物车增加和减少商品数量功能demo示例

    本文实例讲述了Android实现仿淘宝购物车增加和减少商品数量功能.分享给大家供大家参考,具体如下: 在前面一篇<Android实现的仿淘宝购物车demo示例>中,小编简单的介绍了如何使用listview来实现购物车,但是仅仅是简单的实现了列表的功能,随之而来一个新的问题,买商品的时候,我们可能不止想买一件商品,想买多个,或许有因为某种原因点错了,本来想买一件来着,小手不小心抖了一下,把数量错点成了三个,这个时候就涉及到一个新的功能,那就是增加和减少商品的数量,今天这篇博文,小编就来和小伙伴们

  • Android实现的仿淘宝购物车demo示例

    本文实例讲述了Android实现的仿淘宝购物车.分享给大家供大家参考,具体如下: 夏的热情渐渐退去,秋如期而至,丰收的季节,小编继续着实习之路,走着走着,就走到了购物车,逛过淘宝或者是京东的小伙伴都知道购物车里面的宝贝可不止一件,对于爱购物的姑娘来说,购物车里面的商品恐怕是爆满,添加不进去了,以前逛淘宝的时候,小编没有想过要怎么样实现购物车,就知道在哪儿一个劲儿的逛,但是现在不一样了,小编做为一个开发者,想的就是该如何实现,捣鼓了两天的时间,用listview来实现,已经有模有样了,现在小编就来

随机推荐